No, Arturo has a wide range of built-in datatypes but no literal forms of IP addresses or URLs or e-mails or so.
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?
I see, so strings act as implicit "constructors" for datatypes (which are not even datatypes per se, just encoded information within a given string datatype), depending on their usage? This is indeed an interesting design choice. Rebol in such cases requires explicit conversion from string to a target type.
Well, the main difference is that - although we do use strings (for files, urls, etc) - the appropriate datatypes are constructed implicitly, that is: no need for newFile("someFile") or %someFile. "someFile", if it is a file path, will be automatically handled as such. If it is a url, accordingly.
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 :) )
(I'm replying here, since I don't seem to be able to reply directly)
@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 :)
Alright, but personally I fail to see how is that qualitatively different from all the other mainstream languages that use strings as a compensatory kitchen sink to encode literals not present by default.
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?