我正在阅读使用以下示例的教程(我将对其进行概括):
f :: Foo -> (Int, Foo)
...
fList :: Foo -> [Int]
fList foo = x : fList bar
where
(x, bar) = f foo
我的问题在于,您似乎可以在获取它们的元组之外按名称引用x
and 。bar
如果我的猜测是正确的,这似乎就像在其他语言中解构参数列表一样。(换句话说,我不必执行以下操作:)
fList foo = (fst tuple) : fList (snd tuple)
where
tuple = f foo
我对这种行为是否正确?我从未在我一直在阅读的教程/书籍中看到它。有人可以指出有关该主题的更多信息吗?
编辑:可以以类似的方式解构任何东西(列表、数组等),还是只能用元组来解构?