【发布时间】:2014-09-15 03:03:01
【问题描述】:
我应该在 Haskell 中编写一个小函数,它应该删除列表中出现两次的元素。不幸的是,Haskell 抱怨“输入 `|' 上的解析错误”。谁能帮我解决这个问题?
makeSets=mSet[]s
where
mSet stack []=stack
mSet stack (x:xs)
|contains stack x=mSetstack xs
| otherwise =mSet (x:stack) xs
where
contains [] thing=False
contains (x:xs)thing
| x==thing=True
|otherwise=contains xs thing
【问题讨论】:
-
你在使用标签吗?如果是这样,请切换到使用空格。 GHC 将选项卡视为固定大小,并且该固定大小必须满足某些标准。您可能没有将您的编辑器设置为相同的大小,因此有时您可能会得到一些看起来语法正确但不是因为列的缩进不足以用于 GHC 的内容。此外,您可以将
mSet和contains的定义放在同一个where子句中,不需要第二个。喜欢this -
此外,您的
contains函数与带有交换参数顺序的内置elem函数相同,如果您真的想创建一个集合,那么您可以导入Data.Set并且只需使用Set类型,它会自动为您保持集合的唯一性。
标签: haskell parse-error