###前提・実現したいこと
フィボナッチ数列求める関数を作成しました。
Haskell
1fib :: Int -> Int -> [Int] 2fib a b = a : fib b (a+b)
以下が出力です
Haskell
1Prelude > take 5 $ fib 1 1 2[1,1,2,3,5] 3コード
###疑問
そこで実行してて疑問に思ったことがあります。
説明が苦手なのでコードと一緒に書きます。
Haskll
1-- コンスを使ってリストの先頭に追加している。 2Prelude > 1:[] 3[1] 4Prelude > []:[] 5[[]] 6Prelude > 1:[2,3] 7[1,2,3] 8Prelude > 1:1:2:4:5:[] 9[1,1,2,3,4,5] 10 11-- これはエラーになる 12Prelude > 1:1 13 14-- しかし自作した関数にはどこにもリストが存在しません。 15Prelude > fib a b = a : fib b (a+b) 16 17-- コンスはリストに要素を追加するものであってリストがなければエラーになるはずです。 18-- しかし、上記の例ではエラーになっていません。
###質問
なぜこの関数はエラーにならなかったのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。