次の例を使用するチュートリアルを読んでいます (多少一般化します)。
f :: Foo -> (Int, Foo)
...
fList :: Foo -> [Int]
fList foo = x : fList bar
where
(x, bar) = f foo
私の質問は、それらが取得されたタプルの外で名前でx
参照できるように見えるという事実にあります。bar
私の推測が正しければ、これは他の言語でパラメータリストを分解するように見えるでしょう。(つまり、次のことを行う必要はありませんでした:)
fList foo = (fst tuple) : fList (snd tuple)
where
tuple = f foo
私はこの行動について正しいですか?私が読んでいるチュートリアル/本でまだ言及されているのを見たことがありません。誰かがこの件に関する詳細情報を教えてもらえますか?
編集:何か(リスト、配列など)を同様の方法で分解できますか、それともタプルでのみこれを行うことができますか?