...and a monad is just a monoid in the category of endofunctors of some fixed category
Just kidding but algebraic types are a great abstraction paradigm,