(null, null)
(result, new DivideByZeroException())
Hence your unhandled base case in the extension method. Sum types are a more accurate representation and more pleasant to use as a result.(btw, you're looking through the Monads For The Rest Of Us tutorial, but the the State Monad For The Rest Of Us tutorial is the one linked to this thread)