cvs commit: fptools/libraries/base/Control/Monad MonadRec.hs

Simon Peyton-Jones simonpj@microsoft.com
Mon, 30 Sep 2002 11:30:50 +0100


I don't have strong opinions about this myself but

a) I think it's very undesirable to have two directly-competing
libraries.  Let's agree on a common interface and module name.  I think
we are all agreed about this.  We all want to use the same library for
GHC and Hugs too, so let's  get it agreed in time for the upcoming
Hugs-with-hierarchical-libraries release.

b) Levent is trying to maintain as much compatibility as possible with
papers he has published about mdo.  That's a reasonable, but not
overriding goal.

c) He also wants to maintain compatibility with the Hugs releases of mdo
so far.  Again, reasonable but not overriding.  (E.g. we agreed to
replace 'with' with 'let' for implicit parameters recently.)  The user
base is small enough and flexible enough that they'll adapt.

My own 2p worth: Ross may be right about the "right" name for the
module, but I don't think anyone except the inner circle will really
care about the distinction, so maybe the maintaining-compatibility
argument is stronger.  I'm happy with Control.Monad.Rec

Simon

| -----Original Message-----
| From: Ross Paterson [mailto:ross@soi.city.ac.uk]
| Sent: 30 September 2002 10:37
| To: Simon Marlow
| Cc: Levent Erkok; cvs-libraries@haskell.org
| Subject: Re: cvs commit: fptools/libraries/base/Control/Monad
MonadRec.hs
|=20
| On Mon, Sep 30, 2002 at 09:51:02AM +0100, Simon Marlow wrote:
| > Levent Erkok <erkok@cse.ogi.edu> wrote:
| > >   The MonadRec.hs library, stolen from the Hugs release.
| > >
| > >   Note: There's a clear overlap with the library
Control.Monad.Fix.
| >
| > [...]
| >
| > Secondly, I presume we should deprecate the MonadFix class in
| > Control.Monad.Fix now?
|=20
| I'm not so sure -- I think MonadFix is the right name for the class of
| monads that have mfix.  And I think mfix (or fixM) is the right name
for
| the combinator, which is the counterpart of fix in the Kleisli
category.
| Levent, I know you call it a "value recursion operator", because it
| underlies your value recursion syntax (mdo), but this operator can
also
| be used without using that syntax.  I think it would be like renaming
| Control.Monad as Control.Do -- recursion is a syntactic feature; it's
| not a property of a combinator, even though that combinator is used in
| the implementation of recursive syntax.
| _______________________________________________
| Cvs-libraries mailing list
| Cvs-libraries@haskell.org
| http://www.haskell.org/mailman/listinfo/cvs-libraries
_______________________________________________
Cvs-libraries mailing list
Cvs-libraries@haskell.org
http://www.haskell.org/mailman/listinfo/cvs-libraries