Not exactly. If you use the type with Maybe Int like so:

sequence [Just 1, Nothing, Just 2]

then the result is Nothing.

Whereas sequence [Just 1, Just 2, Just 3] gives

Just [1, 2, 3]

Why?

I assume there's special implementations of sequence and sequence_ depending on 
the type of monad used. If it's a sequence_ [putStrLn "hello", putStrLn 
"goodbye"] then this prints out hello and goodbye on separate lines.

It seems to work differently for different types.

Mark


On 30/10/2010, at 3:42 PM, Bardur Arantsson wrote:

> On 2010-10-30 07:07, Mark Spezzano wrote:
>> Hi,
>> 
>> Can somebody please explain exactly how the monad functions "sequence" and 
>> "sequence_" are meant to work?
>> 
>> I have almost every Haskell textbook, but there's surprisingly little 
>> information in them about the two functions.
>> 
>> From what I can gather, "sequence" and "sequence_" behave differently 
>> depending on the types of the Monads that they are processing. Is this 
>> correct? Some concrete examples would be really helpful.
>> 
> 
> sequence [m1,m2,m3,m4,...] = do
>  x1 <- m1
>  x2 <- m2
>  x3 <- m3
>  x4 <- m4
>  ...
>  return [x1,x2,x3,x4,...]
> 
> sequence_ [m1,m2,m3,m4,...] = do
>  m1
>  m2
>  m3
>  m4
>  ...
>  return ()
> 
> Cheers,
> 
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
> 
> 

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to