[Haskell-cafe] What's the advantage of writing Haskell this way?
John Ky
newhoggy at gmail.com
Mon May 30 15:01:28 CEST 2011
Hi all,
I'm trying to learn about enumerators by reading this
paper<https://john-millikin.com/downloads/enumerator_0.4.10.pdf>and
came across some code on page 2 that I found hard to digest, but I
think
I finally got it:
import Data.Monoid
data Stream a
= Chunks [a]
| EOF
deriving (Show, Eq)
instance Monad Stream where
return = Chunks . return
Chunks xs >>= f = mconcat (fmap f xs)
EOF >>= _ = EOF
instance Monoid (Stream a) where
mempty = Chunks mempty
mappend (Chunks xs) (Chunks ys) = Chunks (xs ++ ys)
mappend _ _ = EOF
I guess, it shows my lack of experience in Haskell, but my question is, why
is writing the code this way preferred over say writing it like this:
import Data.Monoid
data Stream a
= Chunks [a]
| EOF
deriving (Show, Eq)
instance Monad Stream where
return x = Chunks [x]
Chunks xs >>= f = mconcat (fmap f xs)
EOF >>= _ = EOF
instance Monoid (Stream a) where
mempty = Chunks []
mappend (Chunks xs) (Chunks ys) = Chunks (xs ++ ys)
mappend _ _ = EOF
Cheers,
-John
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20110530/a081e93a/attachment.htm>
More information about the Haskell-Cafe
mailing list