
Hey, Just wanted to share this little insight I had that I don't think is a common idiom. Often times I need to define: whenJust :: Monad m => Maybe a -> (a -> m b) -> m () whenJust (Just x) f = f x whenJust Nothing _ = return () It always bugged me that you can't find this function anywhere. Actually, you can find it on at least a couple of packages [1], but you can't find it on a standard place. Or can you? A few days ago I decided to hoogle the type of whenJust [2] and what I discovered is that import Data.Foldable (forM_) whenJust = forM_ For example, instead of: mfoo <- doSomething case mfoo of Just foo -> ... Nothing -> return () You may just write: forM_ mfoo $ \foo -> ... There you go. I hope this is useful to someone =). Cheers, [1] http://holumbus.fh-wedel.de/hayoo/hayoo.html?query=whenJust [2] http://www.haskell.org/hoogle/?hoogle=Maybe%20a%20-%3E%20(a%20-%3E%20m%20b)%...) -- Felipe.