Haskellには、既に、整数を奇偶判定する関数 odd、evenがありますが、
”相互再帰”を使って、奇偶判定する関数(※)を再定義してみます。
※正の整数に閉じてます。
車輪の再発明は、”するな”と言われますが、全ての学びとその後の発見や、発明は、
既存の技術の”再発見”や、”再発明”から、持たらされると信じるので。
eve:偶数判定をする関数
od:奇数判定をする関数
相互再帰による奇偶判定関数の定義
eve::Int -> Bool
eve 0 = True
eve n = od (n-1)
od::Int -> Bool
od 0 = False
od n = eve (n-1)
eveに1を与えた際、od 0 となり、Falseを得る。
odに1を与えた際、eve 0となり、Trueを得る。
これを、1以上の値に適用しても、
結局のところ、最終的には、eveに1、odに1を与えたケースに帰結するというのが、
この再帰のアイディアです。