Handle Failure with MonadPlus/ApplicativePlus

Handling failure is probably the most important part of building reliable systems. Monads are a common method of encapsulating failure - for instance, Option[T] returns either Some(t) or None, and None represents the failure. But Monads do not actually have any mechanism for handling failure - in principle, a monad ...

more ...




Learning spire - Scala is Slow, cfor helps

Another cool feature offered by Spire is the cfor macro. cfor is basically just a C-style for loop:

cfor(0)(i => i < maxSize, i => i + 1)( i => {
  result = result + i*i
})

The purpose of cfor is not to do anything you can't do with ordinary Scala iterator primitives. The ...

more ...