Yesterday we reviewed Semigroup and Monoid, implementing custom monoids along the way. We also looked at Foldable that can foldMap etc.
Starting with a few updates today. First, Apply.apply that we looked at in day 3 has been renamed to Apply.ap #308.
In a previous version, checking the monoid laws on a value class kept tripping on Serializable.
That turned out not to be Cats’ fault. I went into Cats’ gitter chat and
Erik (@d6/@non) kindly pointed out that the reason my typeclass instances are not serializable is because they are defined on the REPL. Once I moved First to src/ the laws passed fine.
Jason Zaugg (@retronym) also pointed that, to support serialization beyond precisely the same version of Cats on both sides of the wire, we need to do more things like:
@SerialVersionUID(0L) on everything