Justin du Coeur (jducoeur) wrote,
Justin du Coeur


Here's one for the serious programming geeks: the Scalaz Homepage.

Scalaz is a big, complex library written on top of Scala, that adds a wealth of higher-level data structures and tools. But it is driven by the functional-programming side of the Scala community, and it is hardcore. It not only tends to assume that you understand Monads, it introduces data structures for Applicative Functors, the newer and lighter-weight cousin of Monads that have been the hot topic over the past two years. It has a zillion datatypes like Monoids and Kleislis, an implementation for a totally different way of managing iterators, and just plain cool structures like B-K trees. On the concurrency side, it argues that Futures and Actors are lovely toys, but don't compose properly, so they lift out the concept of Promises -- fully composable lazy evaluation without blocking.

Seriously: the page is concise, but has lots of pointers to code, examples, and some of the papers that the ideas are taken from. I've been digging through it in the cracks of the past couple of days, and have barely even begun to understand all of it -- it's basically a course in advanced, modern computer science, all wrapped up into a single library.

This stuff is not for the faint of heart, but my intuition is that a firm grasp of this library and the concepts embodied in it will stand you in very good stead in the next decade, as many of these ideas begin to come into the mainstream by necessity.

(It should also be noted that I think most of this stuff is considered relatively conventional in Haskell. But Scalaz brings it to the Scala world, bringing Scala more into parity with Haskell on the functional side, matching the way it is already state-of-the-art on the OO side. And I'll warn that they leverage Unicode heavily for this library: I hadn't even realized you could use arbitrary Unicode for function names in Scala until I got to the operators here. They use all sorts of weird mathematical symbols that I don't even know...)
Tags: programming

  • Post a new comment


    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded