Trouble understanding the type of sequence [Just, Just]

Hi everyone, Sorry if this email disturbs you. I haven't used a developer's mailing list before so I'm not sure if I'm violating any etiquette. If I do, please excuse me. I'm trying to understand the type of sequence [Just, Just]. I can understand sequence [Just 1, Just 2] :: Num a => Maybe [a] because when looking at the type of sequence sequence :: (Monad m, Traversable t) => t (m a) -> m (t a) it is clear that this function takes a collection of monadic values and return a single monadic value of the collection. Thus, when we call sequence [Just 1, Just 2] we should get back a Just of [1,2]. Following that train of thoughts, shouldn't sequence [Just, Just] return a single Just? Here is the corresponding SO question http://stackoverflow.com/questions/34244574/trouble-understanding-the-type-o... Lim

Hi, Maybe is a type and Just is one of it's constructors (the other being Nothing):
data Maybe a = Just a | Nothing
On Sat, Dec 12, 2015 at 3:29 PM, Lim H.
Hi everyone,
Sorry if this email disturbs you. I haven't used a developer's mailing list before so I'm not sure if I'm violating any etiquette. If I do, please excuse me.
I'm trying to understand the type of sequence [Just, Just]. I can understand sequence [Just 1, Just 2] :: Num a => Maybe [a]
because when looking at the type of sequence
sequence :: (Monad m, Traversable t) => t (m a) -> m (t a)
it is clear that this function takes a collection of monadic values and return a single monadic value of the collection. Thus, when we call sequence [Just 1, Just 2] we should get back a Just of [1,2]. Following that train of thoughts, shouldn't sequence [Just, Just] return a single Just?
Here is the corresponding SO question
http://stackoverflow.com/questions/34244574/trouble-understanding-the-type-o...
Lim
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
-- Mihai Maruseac (MM) "If you can't solve a problem, then there's an easier problem you can solve: find it." -- George Polya

The type of just is (a -> Maybe a) so your list has type [a -> Maybe a]
which means the Monad instance that sequence is using isn't Maybe, it's (a
->), the type constructor for function types with its first parameter
partially applied. This means that the type of sequence specialized to this
context uses [] for t, the Traversable and (a ->) for m, the Monad. That is
to say sequence :: [a -> Maybe a] -> (a -> [Maybe a]). (a ->) is one way of
representing the Reader monad so you can treat its a parameter as a context
that computations can run inside. That means that sequence [Just, Just]
takes two functions that construct a Maybe value from the value in the
context and turns it into a function which constructs a list of Maybe
values each one fed from the same context. That is to say that (sequence
[Just, Just] $ 4) == [Just 4, Just 4].
On Saturday, December 12, 2015, Lim H.
Hi everyone,
Sorry if this email disturbs you. I haven't used a developer's mailing list before so I'm not sure if I'm violating any etiquette. If I do, please excuse me.
I'm trying to understand the type of sequence [Just, Just]. I can understand sequence [Just 1, Just 2] :: Num a => Maybe [a]
because when looking at the type of sequence
sequence :: (Monad m, Traversable t) => t (m a) -> m (t a)
it is clear that this function takes a collection of monadic values and return a single monadic value of the collection. Thus, when we call sequence [Just 1, Just 2] we should get back a Just of [1,2]. Following that train of thoughts, shouldn't sequence [Just, Just] return a single Just? Here is the corresponding SO question
http://stackoverflow.com/questions/34244574/trouble-understanding-the-type-o...
Lim

when we call sequence [Just 1, Just 2] we should get back a Just of [1,2]. Following that train of thoughts, shouldn't sequence [Just, Just] return a single Just?
What would sequence [Just 1, Nothing] return in this case? Just 1 and Nothing are of the same type - they must be: they are part of the same list.
participants (4)
-
Chas Leichner
-
Imants Cekusins
-
Lim H.
-
Mihai Maruseac