I've spent the last 6 months heavily studying Haskell and the semantics of programming languages. Lurking on Lambda the Ultimate
has been a great resource for this. Although I was really into functional programming in the early 80's when I was in college, I really didn't pay attention to the FP world since then. I was very impressed by the amount of progress the FP community has made in areas such as type inferencing and things like monads for i/o. I would say that they progress faster than any other programming language community. Haskell is a very interesting and powerful language and I encourage Lispers to take a serious look at it. It is now my 2nd favorite language.
Now, the reason I mention this is that something very interesting is happening between the Haskell and Perl communities. They are starting to cross-fertilize. I don't think you can imagine a more stranger pairing. This started in February, when Autrijus Tang
started writing a Perl 6 compiler in Haskell. He started
on February 1st and had the first version in 6 days!Here's why
he chose Haskell:
Many Perl 6 features have similar counterparts in Haskell: Perl 6 Rules corresponds closely to Parsec; lazy list evaluation is common in both languages; continuation support can be modeled with the ContT monad transformer, and so on. This greatly simplified the prototyping effort: the first working interpreter was released within the first week, and by the third week we have a full-fledged Test.pm module for unit testing.
A large portion of a Perl 6 compiler and interpreter was only 4,000 lines of Haskell. That's an incredible amount of productivity and expressive power.
You can follow Autrijus' blog
to read the phenomenal daily progress.
Now, even more amazing, is that the project has drawn members from both the Perl and Haskell communities to contribute code. The Perl folks' new experience with Haskell is even feeding back into the Perl 6 design process.
I can't think of any other case where two different programming language cultures literally at the opposite sides of the universe have come together like this.This interview
with Autrijus is very interesting reading on how he got hooked up with Haskell, his experiences with it, and the cross-fertilization.