, (=<<) -- :: (Monad m) => (a -> m b) -> m a -> m b
) where
+#ifndef __HUGS__
import PrelList
import PrelTup
import PrelBase
import PrelMaybe ( Maybe(..) )
infixr 1 =<<
+#endif
\end{code}
%*********************************************************
%*********************************************************
\begin{code}
+#ifdef __HUGS__
+-- These functions are defined in the Prelude.
+-- sequence :: Monad m => [m a] -> m [a]
+-- sequence_ :: Monad m => [m a] -> m ()
+-- mapM :: Monad m => (a -> m b) -> [a] -> m [b]
+-- mapM_ :: Monad m => (a -> m b) -> [a] -> m ()
+#else
sequence :: Monad m => [m a] -> m [a]
sequence [] = return []
sequence (m:ms) = do { x <- m; xs <- sequence ms; return (x:xs) }
mapM_ :: Monad m => (a -> m b) -> [a] -> m ()
{-# INLINE mapM_ #-}
mapM_ f as = sequence_ (map f as)
+#endif
guard :: MonadPlus m => Bool -> m ()
guard pred
{-# INLINE msum #-}
msum = foldr mplus mzero
+#ifdef __HUGS__
+-- This function is defined in the Prelude.
+--(=<<) :: Monad m => (a -> m b) -> m a -> m b
+#else
{-# SPECIALISE (=<<) :: (a -> [b]) -> [a] -> [b] #-}
(=<<) :: Monad m => (a -> m b) -> m a -> m b
f =<< x = x >>= f
+#endif
\end{code}