And then I put this as “println” into StdLib’s map = global namespace. Since I already have support for functions I just allowed them to do side effects(semantics-no code).
The --> operator might have confused you. It’s in an implicit conversion I defined:

Think of it like Haskell’s $ operator even if it works in a different way. Oh yes, mkString is another function that I put into StdLib that takes a List(takes Any but does pattern matching) and returns List.mkString

Strings

SString is just a case class wrapper for string that extends Expression so I can use it in other expressions. When I was first writing this I forgot to add the action combinator to strip of the quotes and was greatly mistified by all strings being wrapped in “”. I even spend half an hour debugging my evaluator before it dawned on me. I believe the evaluation of this is trivial.

Not quite that different from REPL. In fact it’s just REL: read, evaluate, loop. Printing is now only with explicit println calls. And I don’t need to catch exceptions and return into the loop. Whole code for the interpreter

And now I can put my hello world in a file and run it.
But I needed to decide on the extension. I know it’s silly but I didn’t want to save the file until I had the extension in mind. And this mean naming the language. Being in “logic mode” I asked my awsome girlfriend who’s more artsy type of a person and she immediately responded “scrat”(she’s huge fan of Scrat the squirrel from Ice Age). And them some more funny names, but scrat stuck with me. So I named the file hello.scrat.