Experiments in Haskell algebra