You can do Applicative -> Alternative and study Alternatives as Monoids of Applicatives and then lay on the difference between (<*>) and (<>) as producing a seminearring!
And then go study Monads because why not. They're kind of cool, too.
Re:Functionally Solving Problems With Haskell
by coolsunglasses on Saturday April 05, 2014 @05:03PM
(#7538443)
Actually you just reminded me that I need to explain sums and products in terms of a seminearring.
Understanding join is pretty valuable for understanding Monads too.