_______________________________________________instance Monad ZipList where
ZipList [] >>= _ = ZipList []
ZipList (x:xs) >>= f = ZipList $ do
let ZipList y' = f x
guard (not (null y'))
let ZipList ys = ZipList xs >>= ZipList . join . maybeToList . fmap snd . uncons . getZipList . f
head y' : ysinstance MonadFail ZipList where
fail _ = emptyinstance MonadPlus ZipList
Libraries mailing list
Libraries@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries