今日はパターンマッチによる関数定義をしてみることにした。実装するのは、TrueとFasleを逆転させる論理否定を行うlnot
関数だ。
Rubyで書くと以下のイメージである。
def lnot
lnot ? false : true
end
puts false
puts true
Haskellでは、これをパターンマッチによる関数定義で実装する。
lnot :: Bool -> Bool
lnot False = True
lnot True = False
main = do
print (lnot False)
print (lnot True)
lnot
関数は、Boolを受け取りBoolを返す。lnot False
パターンにはTrue
を、lnot True
パターンにはFalse
を返す。
試しにこのコードを実行した結果は以下のとおりだ。確かに論理否定できていることがわかる。
True
False