a-la Haskell