Proposal: Adding Kleisli composition to Control.Monad

Donald Bruce Stewart dons at cse.unsw.edu.au
Sun Nov 12 22:13:13 EST 2006


moonlite:
> On Mon, 2006-11-13 at 13:15 +1100, Donald Bruce Stewart wrote:
> > http://hackage.haskell.org/trac/ghc/ticket/997
> 
> [snip]
> 
> > Along with the useful control combinator:
> > 
> >     forever :: (Monad m) => m a -> m ()
> 
> [snip]
> 
> > +-- | @'forever' act@ repeats the action infinitely.
> > +forever     :: (Monad m) => m a -> m ()
> > +forever a   = a >> forever a
> 
> I would personally rather see repeatM and repeatM_ like the
> replicateM/replicateM_ pair already in Control.Monad.
> 
> I implement them like this:
> repeatM  = sequence  . repeat
> repeatM_ = sequence_ . repeat
> 
> Google CodeSearch tells me it's the way replicateM was implemented too:
> http://www.google.com/codesearch?hl=en&lr=&q=replicateM+file%3A%5C.hs%
> 24&btnG=Search
> 
> Btw, i hope it is ok to give my opinion on this. Im asking since im not
> a library developer or anything just a normal programmer.

On this topic, we can go back to:
    http://www.mail-archive.com/cvs-all@haskell.org/msg26511.html

However, it was pointed out that repeatM is next to useless, and it is
traditional to use 'forever' for repeatM_ (see for example "Tackling the
Awkward Squad", and http://haskell.org/haskellwiki/Roll_your_own_IRC_bot

That being said, repeatM_ isn't too bad, should people prefer it.

-- Don


More information about the Libraries mailing list