sequence
può essere definito in modo molto semplice come attraversamento con la funzione identità, ovveroin Haskell:
sequence = traverse id
O in Scalaz 6 (dal secondo collegamento sopra), il considerevolmente più dettagliato:
def sequence[N[_], B](implicit
a: A <:< N[B],
t: Traverse[M],
n: Applicative[N]
): N[M[B]] = traverse((z: A) => (z: N[B]))
Quindi sì, qualsiasi tipo con un'istanza attraversabile può essere sequenziato (e non è nemmeno necessario che sia una monade).