Scalaz

Mar. 14th, 2011 04:41 pm
jducoeur: (Default)
[personal profile] jducoeur
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...)

Profile

jducoeur: (Default)
jducoeur

June 2025

S M T W T F S
12 34567
891011121314
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags