haskell 一行で関数定義
ghci使う上で1行で関数定義したいことが多い。
パターンマッチを一行で行うのにちょっとなやんだ。
まさかセミコロンで二回宣言するとは…って複数行でもそうだもの…
if
単なる条件分岐だけどついこっちで書いちゃいそうになる。
*Main> let f x = if x==0 then "OK" else "NG" in f 0 "OK"
ガード
普通通り | で区切っていけばいい。
*Main> let f x | x==0 = "OK" | otherwise = "NG" in f 0 "OK"
パターンマッチ
まさかなぁ。こんな落ちだとは相当悩んだよ。
*Main> let f 0 = "OK" ; f x = "NG" in f 1 "NG" *Main> let f 0 = "OK" ; f _ = "NG" in f 1 "NG"
一行の可読性としてはもしかしてifがもっともいいのかな?