n+kパターンを試そう

30分プログラム、その701。プログラミングHaskellを読んでたら、Haskellにはn+kパターンってのがあるらしい。
これを使うと

even (n+1) = odd n

みたいにパターンの部分にn+kの形が使えるらしいです。

曰く、不人気で将来のバージョンでは消えるかもしれない、そうです。なので、いまのうちに試しておきましょう。

ソースコード

-- 無意味wwww
fact :: Int -> Int
fact 0 = 1
fact (n+1) = (n+1) * fact n

-- 相互再帰
even :: Int -> Bool
odd  :: Int -> Bool
even 0 = True
even (n+1) = Main.odd n
odd 0 = False
odd (n+1) = Main.even n

-- フィボナッチ
fib :: Int -> Int
fib 0 = 1
fib 1 = 1
fib (n+2) = fib n  + fib (n+1)