Interesting, the extension operator is just a flipped "bind" the default way to define a monad (on the category of types and computations.) In Haskell