我建立在Haskell一组数据类型和我的工作remove函数,我无法得到它的权利,这里的名单是我的代码:串联自定义数据类型
data Set a = Set [a] deriving (Eq,Ord,Show)
remove :: Integer -> Set Integer -> Set Integer
remove _ (Set []) = (Set [])
remove numberToRemove (Set (x:xs))
|x == numberToRemove = Set(xs)
|otherwise = Set(x:remove numberToRemove (Set xs))
我想将x添加到集合中删除将返回,但我不知道如何使它与我的自定义数据类型一起工作。
这是我的错误:
test.hs:13:28:
Couldn't match expected type `[Integer]'
with actual type `Set Integer
In the return type of a call of `remove'
In the second argument of `(:)', namely
`remove numberToRemove (Set xs)'
In the first argument of `Set', namely
`(x : remove numberToRemove (Set xs))'
Failed, modules loaded: none.
感谢
如果您正在为乐趣这种数据类型中提取回来的说法,对你有好处!如果你只需要一个你正在编写的代码的Set数据类型,就已经有[Data.Set'](http://hackage.haskell.org/packages/archive/containers/latest/doc/html/Data-Set的.html) – rampion