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...)

(no subject)

Date: 2011-03-14 09:37 pm (UTC)
dsrtao: dsr as a LEGO minifig (Default)
From: [personal profile] dsrtao
I find it difficult to use any symbol when I do not know its name. And yes, I mentally pronounce $var as "string var".

You can deduce what I think the worst part of APL is.

(no subject)

Date: 2011-03-15 03:43 pm (UTC)
From: [identity profile] zachkessin.livejournal.com
I am still trying to get my head around monads. I will get there sooner or later. I think Simon Payton Jones was right when he said they should have been named "Warm fuzzy things"

(no subject)

Date: 2011-03-18 02:59 am (UTC)
From: [identity profile] learnedax.livejournal.com
Wow. Your second paragraph alone contains more data structures I've never heard of than I've seen together in some time...

Profile

jducoeur: (Default)
jducoeur

July 2025

S M T W T F S
  12345
6789101112
13141516171819
20212223242526
27 28293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags