<div dir="ltr">Often you encounter functions that look weird at a first glance but turn out to be *exactly* what you need to implement something intuitively "more useful".<br>Apart from Dmitrii's example showing some direct usage, I think this is such one case, as it allows you to implement (>>=) ma f = join (fmap f ma)<br>Other examples (subjectively of course) of such things are (<*>) which allows you to implement liftA{2,3,..} and mfix, which allows you to have recursive bindings in a do block.<br><br>=======<br>Georgi</div>