functions to monads, a story of shapes - haskell | Upit