And that was a conscious choice. Having different forms of declaring literals, in my eyes simply "litters" the language.
What Arturo does instead is use simple strings... And the interpreter internally tries to make out what they are automatically.
For example: the 'do' function can take pretty much anything. If it is a block, it executes it. If it is a string, it executes it too - but depending on what it is. If it is a url, it executes the remote script. If it's a local file, it executes the file. If it's Arturo code, it executes it as Arturo code.
The interpreter identifies what it is automatically. Why have different data types for that, pre-built in the language?
And this is the way it works throughout, with different functions - 'do' aside, that is.
For example, there is the very powerful 'read' function.
This may take a simple string (text), a file location or a URL. You obviously know what it is and the interpreter will figure it out itself as well.
Now, let's say you want to read a file:
read "myfile.txt"
"Reading" a webpage:
read "http://somewebsite.com/somewebpage"
Parsing JSON from a remote source:
read.json "http://somewebsite.com/data.json"
Or parsing it from a string:
read.json "[1,2,3]"
And 'read' also can take different attributes, e.g. .csv (for parsing CSV files), .html etc etc...
Basically you pass a string with its options and the interpreter figures out where to get it from and what to do with it... :)
Let me know what you think! :)
The point is to keep the syntax clean. (Ok, that would be an argument of going all the way, like Tcl, where everything ends up being a string - but let's just get the best of every world without overdoing it :) )
@9214 Since you are knowledgeable about the topic (included but not limited to Rebol/Red), I would be glad if you joined the effort. Even testing bits here and there would be great. You're welcome :)