GHCIで「parse error on input `='」
parse error on input `='
GHCiでHaskellを書いているとなぜかこのようなエラーが出ます。
対策ですが、とりあえず数値や関数を定義するとき、行頭に「let」を書いておくと出ません。
なんでかは知りませんが…
haskell - Hakell error parse error on input `=' - Stack Overflow
だそうです。
閑話休題。
今回は試しにアッカーマン関数を書いてみたのですが、わずか3行で書くことができました。やっぱりこういうのにはめっぽう強いですね。
ack :: Int -> Int -> Int ack 0 n = n + 1 ack m 0 = ack (m - 1) 1 ack m n = ack (m - 1) (ack m (n - 1))
パターンマッチを使うと関数の定義式をそのまま書き写したかのような記述で実装することができていい感じです。ちなみに定義式は以下のとおり。
まあそのまんまですねw
Ack(4,1)と間違えてAck(4,4)を計算させてしまってからPCの調子がおかしい
— ゆうなんとか@右手治ってないです (@yuu_hara) 2013, 6月 25
ちなみにこのアッカーマン関数、ちょっと引数を間違えるだけで恐ろしく大きな数になる*1ので気をつけましょう。Ack(4,1)はですが、Ack(4,4)は*2とかいう頭おかしい数です。すでにAck(4,2)の時点で約2万桁あるという…