Просто прочитайте вихідний код Monad, ви приготували @_jhunsaker