簡體   English   中英

在Haskell中使用列表數據結構創建集合數據類型

[英]Making a set data type with list data structure in Haskell

在Haskell中編寫插入和成員操作。 確保在ML和Haskell中,您的Set數據類型與列表不同。 在Haskell中,將您的Set類型定義為Eq和Show類的實例。

let setAdd l n = if (elem l n) then l else l ++ [n]
let setMember l i = l !! i

我上面編寫的代碼僅具有在列表上執行的功能。

有沒有辦法將其納入課堂? 抱歉,我正在學習函數式編程。 有沒有一種方法可以真正使Set類具有成員變量,例如列表?

這里的數據類型是[a] ,它已經具有可用的實例,包括EqShow (順便說一句正確的事)。

如果你想有寫自己的情況下,你應該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 = ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM