SICP example code and exercises in Haskell