私はハスケルには新しく、この2つの機能の違いは何か不思議でした。これらの2つのHaskell関数フィボナッチ関数の違いは何ですか?
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
fib1 = 1 :1 : [a+b | (a,b) <- zip fib1 (tail fib1)]
私は彼らがより明確にどのように働いているか知っています。次のように私は現在、それらを理解する方法
は次のとおりです。
私はzipWithは、最初の関数で2人の、この場合のリスト「のFIB」と「テールのFIB」に追加機能を適用することを知っています。しかし、私は再帰がどのように働いているのか混乱しています。私はフィックスがリストを返し、テールフィックスはリストの先頭を除いてすべてであることを知っています。しかし、私は中間的なステップとzipWithがこの再帰的にどのように働いているのか混乱していると思います。
fib1では、私は上記の "zip"と同じ質問がありますが、 "a"と "b"にどのように正確に適用されているのでしょうか?なぜタプルに "a"と "b"があるのですか?
もっと明確ではないと申し訳ありません。私は人々が何を持っていることは、リストにフィボナッチ数列を作成する無限再帰で、第一の機能では、事前
'fib1'に関して:' zip'は 'zipWith(、)'と同じです(もっと冗長に 'zipWith(\ a b->(a、b))'です。 – duplode