【发布时间】:2017-12-29 18:07:00
【问题描述】:
我想知道如何使用 Haskell 列表推导从列表中获取唯一值。因此,如果我输入 [2,4,5,4,4,6,2],它将返回 [2,4,5,6]。
最初我从唯一 (y:ys) = [x | x
【问题讨论】:
-
不要用列表理解来做这件事,只需使用the
nubfunction。或者,可能更好,根据您的用例,使用Set而不是列表。 -
是的,但我正在尝试在没有内置函数的情况下练习和解决它
-
在列表理解中仅使用保护子句是不可能的。这些仅限于“本地”视角,一次只查看一个元素。要根据输入的其余部分排除元素,您将需要一些其他构造,例如
nub或折叠。 -
如果你想避免库函数,你必须以某种形式重新实现它们。首先定义一个给定
x和ys的函数,删除列表ys中所有出现的x。然后使用递归扫描列表并删除重复项。这相当于你自己重写nub。
标签: list haskell recursion list-comprehension