doJust

こういう関数も欲しい:

module Scrach where

doJust :: Maybe (IO a) -> IO ()
doJust (Just io) = io >> return ()
doJust Nothing   = return ()
*Scrach> doJust (Just $ print "doing")
"doing"
*Scrach> doJust Nothing
*Scrach> 

僕が出した答えはこのすぐあと:

module Scrach where
import Prelude hiding (sequence_)
import Data.Foldable

doJust ::  Monad m => Maybe (m b) -> m ()
doJust = sequence_

しかし… ここまできたら、もう関数を宣言すること自体が無駄であるという気がしないでもない。