例えば
let When true d = d
let foo = () |> When false
エラーなので、好きではない副作用があります。MatchFailureException
私はここで良い副作用があることを知っています:let foo = if false then ()
しかし、警告Incomplete pattern matches on this expression.
は、必要なものを追加できるように教えてくれます。方法がわからない、または可能かどうかはわかりませんか?他の方法で、値を引数として使用できるのはなぜですか?
ところで:私は書くことができることを知っていますWhen b d = if b then d else ()
が、質問はより一般的です。
Haskellに説明を追加
let wh :: Bool -> IO () -> IO ()
wh True f = f
wh False f = return ()