複数のブール式をテストする推奨される方法は何ですか?
私はこれを使用しています:
case () of () | test1 -> value1
| test2 -> value2
| otherwise -> value3
これがスタイルいいの?もっときれいな方法はありますか?
複数のブール式をテストする推奨される方法は何ですか?
私はこれを使用しています:
case () of () | test1 -> value1
| test2 -> value2
| otherwise -> value3
これがスタイルいいの?もっときれいな方法はありますか?
このパターンは、たとえばControl.Conditionalcond
からの関数でシミュレートできます。
signum x = cond [(x > 0 , 1)
,(x < 0 , -1)
,(otherwise , 0)]
特別綺麗とは言えませんが。
次の GHCでは、マルチウェイを使用できるようになります。万歳! (さっき見つけた)
f t x = if | l <- length t, l > 2, l < 5 -> "length is 3 or 4"
| Just y <- lookup x t -> y
| False -> "impossible"
| null t -> "empty"
Haskell には一致しない場合の適切な構文がないため、これは私がよく目にするイディオムです。私の意図をより明確にするために、私は通常、意図的に次のように一致させundefined
ます。
case undefined of
_ | foo -> bar
| baz -> quux
| otherwise -> chunkyBacon
タプル内の一連の式でパターンマッチを行うこともできます
case (test1,test2) of
(True,_) -> value1
(_,True) -> value2
_ -> value3