Monad / Comonad Precis, in Literate C#: https://github.com/iSynaptic/Monad-Comonad-Precis/blob/master/Precis.cs#L114