![](/img/trans.png)
[英]Converting a string of characters into a list with a set layout in Haskell
[英]Converting [[a]] -> Set (Set a) in haskell
我正在嘗試將列表列表轉換為 haskell 中的一組集合。
setOfSet :: [[a]] -> Set (Set a)
我已經這樣定義了我的集合
data Set a = Leaf | Node (Set a) a (Set a)
所以本質上我的集合(集合 a)將是一棵二叉樹,其中每個節點都是二叉樹(即集合)。 我的清單已經訂購,所以我可以這樣做:
SetOfSet x:xs = Node Leaf (fromList x) (setOfSet xs)
但我現在想知道是否有更有效的方法
再看看你的類型: [a] -> Set a
. 如果你有a
s 的列表,你可以獲得a
s 的集合。
所以考慮如果你把這個 function 給map
會發生什么:
map orderedFromList :: [[a]] -> [Set a]
然后如果將orderedFromList
應用於集合列表會發生什么:
orderedFromList . map orderedFromList :: [[a]] -> Set (Set a)
所以
setOfSets :: [[a]] -> Set (Set a)
setOfSets = orderedFromList . map orderedFromList
假設orderedFromList
做出任何努力來構建平衡樹,這會給您帶來比 function 更好的結果,后者本質上只是構建集合的鏈接列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.