[Haskell-beginners] Sequence function

David McBride toad3k at gmail.com
Tue Sep 26 17:49:24 UTC 2017


Remember that foldr has flipped operator order from foldl.

>:t foldl
foldl :: Foldable t => (b -> a -> b) -> b -> t a -> b
>:t foldr
foldr :: Foldable t => (a -> b -> b) -> b -> t a -> b

That means that you should expand them in the opposite order from how
it seems to read.

p >>= \x ->  -- Just 1 >>= \ 1
q >>= \y -> -- return [] >>= \ []
return (1 : []) -- Just [1]



On Tue, Sep 26, 2017 at 12:59 PM, Jimbo <jimbo4350 at gmail.com> wrote:
> Hello everyone,
>
> Just trying to understand the sequence function as follows:
>
> sequence [Just 1]
>
> -- evaluates to Just [1]
>
> sequence = foldr mcons (return [])
>     where mcons p q = p >>= \x -> q >>= \y -> return (x:y)
>
> -- I'm trying to walk through the code as follows, I understand what is
> below isn't
> -- haskell code
>
> p >>= \x ->              []
> q >>= \y ->        Just 1
> return (x:y)    --  [] : Just 1
>
> Am I thinking of sequence correctly here?
>
> Best regards,
>
> Jim
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners


More information about the Beginners mailing list