如何将以下haskell代码更改为高阶函数?

时间:2016-04-21 21:09:14

标签: haskell

定义一个函数

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

1 个答案:

答案 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