Neat. It sounds like from your description of 'function\value merging' that this is the same thing as 'treating functions as first-class citizens' Are they the same thing or is there some subtle difference?
The syntax of the language looks like Python without the need for significant whitespace, which is nice.
Unrelated: I don't mind the marking-blocks-by-indentation method used by Python but I never understood why someone would go out of the way to do it. You'd think it would be easier to write a parser for a free-flowing language than one that placed importance on whitespace.
Different. Search on their tutorial for "Constant functions".
Parsing whitespace versus curlies is mostly equivalent -- whitespace is still just bytes. It's only a little confusing to tell meaningful from meaningless whitespace. I think Haskell did a really good job with layout.
My brain vertainly has an easier time with curlies, but perhaps it's just a matter of familiarity. It always bothers me that Python's blocks hang open in a way not unlike how most people lay out the awful switch construct in C.
I don't mind the construct itself, I just wish the syntax didn't reflect so closely the generated code. While I suppose that's good for C, every other language with braces has copied C's syntax despite it no longer being a very good fit. My main gripe is that falling out of the bottom of cases should be the exception, not the default.
I can't remember which language it is, but I remember some language where if you didn't put a break on the end of a case the compiler would complain bitterly. If you're not going to allow control to fall through the cases, why use a syntax which was designed around that? Stupid.
main() functions make me sad; as do ints and floats being disparate types, rather than optimization hints aor restrictions on a more general number type. Maybe I'm just spoiled from using languages where I don't have to care.