Skip to content

Instantly share code, notes, and snippets.

@fernandomora
Last active October 14, 2015 17:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fernandomora/102a3837b283e439278c to your computer and use it in GitHub Desktop.
Save fernandomora/102a3837b283e439278c to your computer and use it in GitHub Desktop.
Scala Monad sequence method for generic travesables using for-comprehensions and builder pattern
import scala.language.higherKinds
def sequence[A, M[X] <: TraversableOnce[X]](in: M[Monad[A]])(implicit cbf: CanBuildFrom[M[Monad[A]], A, M[A]]): Monad[M[A]] = {
val unit = Monad(cbf(in))
in.foldLeft(unit){
(mba, ma) => for (ba <- mba; a <- ma) yield ba += a
}.map(_.result())
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment