En la presente entrada, Scala VII: leyes matemáticas de las mónadas, me centraré en identificar las leyes de las mónadas y unos ejemplos que demuestran dichas leyes.
Las leyes matemáticas por las que se rigen las mónadas son dos: propiedad de elemento neutro o elemento de identidad y propiedad asociativa.
La demostración de la propiedad de la propiedad del elemento neutro por la izquierda y por la derecha queda definida en el siguiente snippet de código:
import scalaz.Monad import scalaz.Scalaz._ def identidadPorLaIzquierda(): Unit = { Monad[Option].point("izquierda").>>=({ x => (x + " OK").some }).assert_===("izquierda OK".some) } def identidadPorLaDerecha(): Unit = { (("OK").some).>>=( x => Monad[Option].point(x + " derecha")).assert_===("OK derecha".some) }
La propiedad asociativa para la mónada queda definda en el siguiente snippet:
def asociatividad(): Unit = { Monad[Option].point(4).>>=({ x => (x + 4).some }).>>=({ y => ( y + 2 ).some }).assert_===( Monad[Option].point(4).>>=({ x => (x + 2).some }).>>=({ y => ( y + 4 ).some }) ) }
Como se observa en el código anterior, el resultado de cálculo de las funciones monádicas es el mismo ; con lo cual, el orden de ejecución de las funciones de suma de 4 y de 2 es el mismo.
Para el lector interesado, las entradas que he realizado sobre Scalaz hasta la fecha son las siguientes: