(>>) the default is defined as
a >> b = a >>= (\_ -> b)
therefore, the ignored value is a in the given monadic value ma . Type >>= , specialized for displaying:
(>>=) :: [a] -> (a -> [b]) -> [b]
l >>= f calls f for each element of the list l to display a list of lists, which is then concatenated.
eg.
[1,2] >>= (\i -> [i, -i]) > [1,-1,2,-2]
Ignoring each input element and returning the value [2,3] will result in n copies of the list [2,3] for an input list of length n
eg.
[1] >>= (\_ -> [2,3]) > [2,3] [1,2] >>= (\_ -> [2,3]) > [2,3,2,3]
this second example is equivalent to ([1] ++ [2]) >> ([2] ++ [3]) in your question.
source share