Hi Yitz,
Thanks for your input.
Since I'm trying to learn Monads, let's look at this as a teaching moment. The example code (see below), which I pulled off YAMT (Yet Another Monad Tutorial ;-)), is the source of my 'comb' function.
I understand the code as it now stands, and I understand that the Prelude (>>=) would replace the 'comb'. Adding whatever statements are needed, how would you "specialize" the (>>=) to Maybe and solve this particular problem.
Michael
--- On Wed, 4/29/09, Yitzchak Gale <gale@sefer.org> wrote:
From: Yitzchak Gale <gale@sefer.org> Subject: Re: [Haskell-cafe] chr/ord? To: "michael rice" <nowgate@yahoo.com> Cc: "Brandon S. Allbery KF8NH"
<allbery@ece.cmu.edu>, "haskell-cafe@haskell.org" <haskell-cafe@haskell.org> Date: Wednesday, April 29, 2009, 4:30 AM
Michael Rice wrote: > -- comb is a combinator for sequencing operations that return Maybe > comb :: Maybe a -> (a -> Maybe b) -> Maybe b > comb Nothing _ = Nothing > comb (Just x) f = f x
comb is essentially the same as something in the Prelude: it is just (>>=) specialized to Maybe.
(>>=) :: Monad m => m a -> (a -> m b) -> m b
> Now what am I misunderstanding in the code below? > lst = [('A',65),('B',66),('C',67),('D',68)]
Brandon S. Allbery wrote: > ...it defaulted to [(Char,Integer)]. This is a manifestation > of the Monomorphism Restriction...
While it may be debatable whether the Monomorphism Restriction is helpful in compiled code, it is unquestionably a
major nuisance at the GHCi prompt, for this and other reasons.
I highly recommend that you create a .ghci file in your home directory containing the line:
:set -XNoMonomorphismRestriction
In my opinion, MR should be off by default in GHCi.
-Yitz
|