Admittedly there aren't a lot of places to take a Smalltalk-inspired language, but my big question in skimming this is: what does it intend to solve that, as the big example in the Smalltalk-inspired space, Io (http://iolanguage.org/) does not?
It's simpler.
Nice, but this is pretty ugly:
{\ ^9. }
I mean, the trailing "\" after "{" is just a terrible eyesore!
I don't like it either. But what to do about it? It seems logical to use `{|` instead, but that's not much prettier. Presumably just a plain old open brace is hard to parse.
Just use the obvious:
{ ^9. }
That is equally inconsistent...
I am unclear on why they switch from | to \ for the no argument case, but I don't find it especially ugly.
I guess Citrine's creator feels the same way.
Inconsistent = Ugly
While there are certainly ugly inconsistencies, I disagree that this holds as a rule. This kind of inconsistency - sensitivity of a surface feature to some other attributes of the situation - has the effect of increasing the redundancy of the encoding. Redundancy can (it doesn't always!) help with comprehension and correctness; individual instances should be evaluated on their merits.
It's documented. There's a visual clue: see the arguments as books on a shelf and the pipe | as a bookend, when you remove the books, the bookend falls over - it's a visual thing and it's my attempt to use humor, so dont invite me to any parties.
There should be a consensus by now about not creating any new languages with null/nil/undefined/whatever.
All its variables are dynamically scoped, the syntax is the worst of SmallTalk and Prolog, and you're worried about nil?!
nil in Smalltalk is an object itself, so if you want to build something Option-like with it, this is pretty straightforward to implement. Considering that Citrine claims that "everything is an object", this should also be the case there, so I don't really see a problem with that.
Some interesting stuff---but I've developed a reflex aversion to languages that proclaim "everything is an object!" as though that were an unalloyed advantage.
What would be disadvantageous about it? This facet makes Smalltalk (and Ruby) extremely consistent, I don't see how that would be a bad thing (as long as we are talking about an object-oriented language).
> Ruby, Smalltalk, JavaScript and C
I don't see where C comes in here at all.
Curly braces for functions come from C, Smalltalk uses brackets [].