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 …

more ...





Learning Spire - Vector Spaces!

I've been working through some of Spire, which is a math library for Scala. I originally discovered Spire when I was looking for a VectorSpace typeclass for Scala, so it's probably worthwhile to discuss that here. We all learned abot vector spaces in Linear Algebra, and probably thought they were …

more ...