5 comments

[ 2.8 ms ] story [ 20.9 ms ] thread
Simple, modern and portable interpreted programming language for efficient scripting
Interesting new language. I'll definite have a look.

In what aspects does it differ from traditional Rebol (v2)?

Well, the language is indeed inspired by Rebol - in the sense that it is block-based (where blocks are nothing but lists of words and symbols, without any initial meaning). However, it also combines many other concepts. Basically, think of it as a fusion between Haskell and Ruby with the (inexistent) syntax of Rebol.

If you want to get a feel of it, just try it online @ http://arturo-lang.io/ or check one of the many working examples already there. :)

Blocks in Rebol are not a mere "stuff" delineated by square brackets. Rather, it's a heterogeneous container that can hold first-class values and represent both code and data (homoiconic property), thus serving as a base for the syntactically-rich data format.

It also has a well-defined model [1] within the language, and, as such, can be freely operated upon at the run-time.

On a grand scale of language design, blocks form a concrete-syntax tree that can be derived from (or converted to) both textual [2] and serialized binary [3] forms.

Moreso, Rebol's syntax was in fact inspired by Logo. So, the relation between Arturo and Rebol seems to be very superficial; reminds me of Spry [4] that claims to be Rebol-like but is in fact an opinionated Smalltalk.

[1]: http://www.rebol.com/docs/core23/rebolcore-6.html

[2]: https://pointillistic.com/ren/

[3]: https://github.com/red/docs/blob/master/en/redbin.adoc

[4]: http://sprylang.se/

Well, I didn't say it's a Rebol-derivative. I just said some part of the syntax (which by the way is much more close to Rebol/Red than you think) is inspired by Rebol.

I wanted an easy-to-read format and homoiconicity and since there was one already, this was the way to go.

Now, Arturo tries to offer much more (that's why I started the project in the first place anyway). I have many-many working examples in the /examples folder of the repo so that you can try it out if you want.

All comments, suggestions and ideas are more than welcome! :)