> everything you ask for already was in Haskell ages ago: those were the days ... where the method in "Functor" method was called "map", and "zero" was a method of, guess what, "MonadZero"...