3 ms·
Could you please elaborate in what aspects Arthuro is ideologically inspired by Rebol, aside from minor syntax resemblance?
by 9214 6y ago
Could you please elaborate in what aspects Arthuro is ideologically inspired by Rebol, aside from minor syntax resemblance?
- stchacademy 6y agoEasy-of-use, flexibility, blocks and dialecting, no-reserved-keywords approach, wide range of datatypes, homoiconicity - to name a few. That being said, as I've already mentioned, my goal was not to make a Rebol replica. Arturo is a new language. Now, regarding the "inspiration" part, to anyone that is familiar with Rebol, I think it would be fair to say that Arturo does look more like the Rebol group, than an Algol-type language, or ML, or Python type of language. I don't know... (I would really be intrigued to hear what it reminds you of... :))
- 9214 6y agoMy 2 cents: please add an example or two for dialecting and homoiconicity, because that's IMO not apparent from what I've seen so far (granted, I could have missed some bits), and the terms "dialecting" and esp. "homoiconicity" are so ill-defined that everyone uses them to describe different things. My understanding so far is that Arturo has VM-based interpreter (perhaps stack-based or even indirect-threaded, hence the mention of Forth as an inspiration) which operates on a syntax tree (either concrete or abstract, although Rebol uses the former) produced from textual source during lexing. Is that correct?
- stchacademy 6y agoI want that too - I mean to elaborate more on these aspects with real-use examples, but I guess I'm putting it off until I deal with other small issues. Regarding "homoiconicity", the way I would succintly put it is that: the line between what is considered code and what is data is super-fine. Basically, anything can be anything - depending on the context. Thus, an Arturo script can manipulate its own code, the way it can manipulate any other type of data. Regarding Arturo's implementation: It's written in Nim (though I have written it in the past in almost every language you can think of... lol started with C++, went to D, then to Nim, back to C, and now in Nim again). Basically it's a Stack-based Bytecode Virtual Machine. And yes, Forth's influence is also important - although (intentionally) not that obvious at first sight. The source text is parsed to an abstract structure/tree of words and symbols. That's the part that happens in translator/parse. Then if it's an executable block, it is evaluated (as valid Arturo code) into Bytecode (this happens in translator/eval), and then this bytecode is executed by the virtual machine (in vm/exec).