定义一个函数
rmdups :: Eq a => [a] -> [a]
从列表中删除重复项。例如,rmdups "ababca"
应该返回
"abc"
。输出列表中元素的顺序并不重要
这是我到目前为止所做的: 这有效:
rmdups :: Eq a => [a] -> [a]
rmdups [] = []
rmdups (x:xs) = x : rmdups (filter(/= x) xs)
这不起作用,我做错了什么:
rmdups = map head . group . sort
答案 0 :(得分:2)
你可以这样做:
import Data.List (nub)
rmdups = nub
但我认为你不被允许。
否则,您的解决方案(rmdups = map head . group . sort
)适合我。
If the compiler says group
or sort
not in scope,只需从Data.List
导入。
PS:我相信你的意思是“点自由风格”,而不是“高阶功能”
修改:感谢user3217013指出that。