[Haskell-cafe] [Maybe Int] sans Nothings
Brent Yorgey
byorgey at seas.upenn.edu
Mon May 23 21:08:09 CEST 2011
On Mon, May 23, 2011 at 10:49:55AM -0700, Alexander Solla wrote:
> On Mon, May 23, 2011 at 9:20 AM, michael rice <nowgate at yahoo.com> wrote:
>
> > What's the best way to end up with a list composed of only the Just values,
> > no Nothings?
> >
> > Michael
> >
> > ==========================
> >
> > import Control.Monad.State
> > import Data.Maybe
> >
> >
> > type GeneratorState = State Int
> >
> > tick :: GeneratorState (Maybe Int)
> > tick = do n <- get
> > if ((n `mod` 7) == 0)
> > then
> > return Nothing
> > else do
> > put (n+1)
> > return (Just n)
> >
> > {-
> > *Main> evalState (sequence $ replicate 9 tick) 1
> > [Just 1,Just 2,Just 3,Just 4,Just 5,Just 6,Nothing,Nothing,Nothing]
> > -}
> >
> >
> There's a library function for it, but also:
>
> > filter ((/=) Nothing)
>
> is readable enough.
Just a minor quibble: note that
> filter (not . isNothing)
is slightly preferable since it does not introduce a frivolous
equality constraint on the type wrapped by the Maybe.
-Brent
More information about the Haskell-Cafe
mailing list