Category: online resources

A History of Haskell

Recently I read a paper “A History of Haskell: Being Lazy With Class” by Paul Hudak, John Hughes, Simon Peyton Jones and Philip Wadler. Now it’s time to share some impressions.

First of all this is a very long read. It took me a couple of days to get through 55 pages of dense, two-column text. Well, if you exclude the references section length reduces to 45 pages, but that’s still quite a lot. The title can be slightly misleading. This paper is about history but it is also practically about everything related to Haskell. It describes creation of the Haskell Committee, initial meetings and discussions about language goals, features and name. But that’s only a small part of this paper. The rest is about principles, features, contributions, tools and community. Of course all of this is placed in a historical context and I must say it is very insightful to know the motivation behind some particular language features. I consider hours spent on reading this paper a very good investment. “A History of Haskell” is a great summary of Haskell’s development process as a whole. As a beginner I learned a lot of things about the language that I wasn’t aware of. Wide overview of literature presented in the paper gives a general idea on what is researched in the Haskell world, which gives me some ideas where to go with my own research. This paper is definitely a must-read for people diving into Haskell!

Architecture of Glasgow Haskell Compiler

In one of the previous posts I mentioned that the second volume of The Architecture of Open Source Applications contains chapter about Glasgow Haskell Compiler by Simon Marlow and Simon Peyton Jones1. I read this chapter yesterday and I must say it was insightful and interesting. It gives a general view of GHC architecture and it does so very effectively. Things are explained starting from high-level structure and then going into details about some selected parts of the compiler. There’s a nice overview of the compilation pipeline. This pipeline contains many steps that you won’t find in most books about compilers. Since I’m taking the Compilers course at Stanford it is nice to see how theory differs form practice :) What I consider as the most interesting in this paper is the discussion of the design choices made by the GHC creators and how these choices affect what GHC and Haskell are today. Authors also share some of their development practices, which I find very valuable, mainly because GHC is a project developed mostly by 2-3 people for over 20 years and it managed to be successful and extendible. This means that authors got some real experience about what works in real project and what doesn’t – I’m willing to follow their advices.

The paper is 29 pages long. It reads fairly quickly. It took me about 3,5 hours to get through, mostly because I was googling around trying to find out more about things that were new to me or things I didn’t understand. This means that while reading the paper I was also trying to figure out more about Core and find out what the hell is STG and Cmm. I’d like to get deeper into the architecture of GHC and I think this general overview is a nice introduction. In fact all the information in the paper – and much much more – can be found in the Commentary section of GHC wiki.

  1. There’s also PDF draft version of this paper. I didn’t notice any differences between the draft and the final version []

22nd edition of Haskell Communities and Activities Report is out

22nd edition of Haskell Communities and Activities Report has just been released. Here’s an overview of new informations:

  • Learn You a Haskell was translated into Japanese. Japan is lucky, they already have edition of Real World Haskell.
  • Edward Z. Yang is now the editor of The Monad Reader.
  • There is a lot of progress on GHC development. Some features will be present in 7.6 release, some are work in progress with no release date yet. Among them are:
    • adding support for holes: you could write incomplete code with some fragments missing (these are holes) and GHC would report the type that hole can have. This is inspired by Agda.
    • There is work on new code generator, though I’m not sure how this relates to the LLVM backend.
    • There is possibility to change number of utilized cores at runtime. Previously it was possible only when starting the program and it couldn’t be changed once the application started.
    • SIMD instructions support for LLVM backend is on the way, hopefully will make it into 7.6.1. Since I’m doing mostly numerical computations I’m looking forward to it.
  • There’s a lot of progress on Haskell web frameworks: Yesod (stable version was released about a month ago) and Snap (two major releases since the last report).
  • Portackage is a new portal that gathers informations form Hackage. It definitely needs more development work, but I think it has potential to become useful.
  • And last, but not least: Yet Another Haskell Blog is also mentioned in the report.

I’ve found some other interesting things in the report, mostly informations about projects that concentrate on parallel computations in Haskell: Data Parallel Haskell, Glasgow Parallel Haskell and Parallel GHC Project. I’m especially interested in these – though I don’t have any knowledge in that area yet – because it looks that parallelization of computations can be done a whole lot easier within the functional programming paradigm. There are many new Haskell projects mentioned in the report as well, but they are beyond the scope of my interests so I didn’t mention them. Read the full report here – you’ll most likely find other interesting stuff.

Staypressed theme by Themocracy