在 Haskell 中写入插入和成员操作。确保在 ML 中 和 Haskell,您的 Set 数据类型不同于列表。在哈斯克尔, 将 Set 类型定义为类均衡器和显示的实例。
let setAdd l n = if (elem l n) then l else l ++ [n]
let setMember l i = l !! i
我上面写的代码只是让它具有在列表上执行的函数。
有没有办法把它变成一个类?对不起,我只是在学习函数式编程。有没有办法实际制作一个具有成员变量的 Set 类,例如列表?
您在此处的数据类型是 [a]
,它已经有可用的实例,包括 Eq
和 Show
(顺便说一下,它们做正确的事情)。
如果要编写自己的实例,则应以类似于以下内容的方式newtype
基础类型:
newtype Set a = Set { getSet :: [a] }
然后你可以写:
instance Show a => Show (Set a) where
show (Set a) = ...
instance Eq a => Eq (Set a) where
Set a == Set b = ...