Hi "amperes",

Your message shows that ((->) a) is a monad.  This is actually
a very well known result, and you'll find references to it in many
published papers: R a = ((->) a) is often described as the "reader"
or "environment" monad.

You seem to be proposing two things:

- The definition of Monad ((->) a) should be included in the
  Haskell prelude.  If so, that's an issue that you should bring
  up on the Haskell list.  It's not a bug in Hugs.  Unfortunately,
  Haskell 98 removed even the Functor instance for ((->) a), and
  the releases of Hugs 98 have followed suit.

- The classes Functor and Monad should be merged into a single
  class.  While every Monad is a Functor, you'd need to show that
  the reverse holds too before you could merge the classes.  I'll
  leave further exploration of that as an "exercise to the reader".

Hope this helps!

Mark

Reply via email to