Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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.


Yes, you are right.

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... :)


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 :) )


Good point about Tcl, that now makes sense. Thanks for elaborating!


(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.


FYI, I've just published the first complete reference (language reference + full library reference, with tons of examples): https://github.com/arturo-lang/arturo/wiki

Let me know what you think! :)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: