First Scala Monad example
As you can see flatMap removes those None's from our computation.
So as promised here is my first scala monad example
trait Function { def name: String } case class ShellFunction(name: String) extends Function case class ScalaFunction(name: String) extends Function val l: List[Option[Function]] = List(None, Some(ShellFunction("build")), None) val resultUsingForConstruct = for ( i <- l; j <- i ) yield (Some(ScalaFunction(j.name))) val resultUsingFlatMap = l flatMap { i: Option[Function] => i map { j: Function => Some(ScalaFunction(j.name)) } } println("Result using for construct: " + resultUsingForConstruct) println("Result using flatmap construct: " + resultUsingFlatMap) Output: List(Some(ScalaFunction(build)))
As you can see flatMap removes those None's from our computation.
No comments:
Post a Comment