Scala + Mozart/Oz
lists.gforge.info.ucl.ac.be
lists.gforge.info.ucl.ac.be
I also have to add to the praise of Concepts, Techniques, and Models of Computer Programming. I remember in particular an exercise from that book where you were asked to write a simple parser in a particular paradigm. It basically asked you to write the procedure parse(code, syntax_tree), where you'd give the code as the first parameter, and where syntax_tree was the output parameter. Once you had made that, the last sub-exercise said "Oh BTW, try calling your function with an empty code parameter, and an existing syntax tree." Lo and behold, it worked! My parser could run in reverse, and it spat out all strings that would produce the given syntax tree. This was a mind blowing experience at the time.
I'm slowly discovering that the coupling of a logic paradigm with a language that supports macros opens the door to some really incredible code transformations.
Reference: http://infoscience.epfl.ch/record/150346/files/onl0000031-ch...
https://existentialtype.wordpress.com/2011/03/17/parallelism...
(The whole blog is worth reading; Harper is basically giving a blow-by-blow as CMU rolls out it's new functional-programming-first CS curriculum.)
http://www.ps.uni-saarland.de/alice/
I'm not sure syntax is the main reason for slow uptake of Mozart. In fact the syntax can offer some advantages. See this post by pvr about a tail recursive append without helper functions:
http://lambda-the-ultimate.org/node/755#comment-7056
Chris Rathman followed up with an AliceML version and compares the syntax:
http://lambda-the-ultimate.org/node/755#comment-7057
I like Mozart/Oz but the two main things missing for me are unicode support and 64 bit support.
My favorite features of M/Oz:
* logic programming:
http://www.mozart-oz.org/documentation/tutorial/node8.html#c...
* concurency:
http://www.mozart-oz.org/documentation/tutorial/node8.html#c...
I'm not entirely sure why he chose Scala either, but it will definitely make for more accessible tool support now that Scala is getting first-class treatment in IDEA, etc.
I guess the "obvious" available options are probably Erlang, Scala, and Clojure, and Scala is definitely in the lead right now in terms of popularity with the intended audience.
It could be worse, he could have decided to make a colorforth front-end. :-)