random stuff written in haskell for learning purporses