我有一个具有几种不同类型的内部循环链接的数据结构,从cycle命令的意义上讲它是无限的.是否有任何有趣的模块可以将这些结构折叠成使用索引的平面数据结构?
我感兴趣的序列化完整的数据结构,既通过Read和Show以及通过Data.Serialize或相似.
构建顺序索引显然有很好的功能,但基于内存地址哈希值的索引也可以正常工作.
我正在尝试为图表构建数据结构。
以下代码似乎按预期工作:
data NodeRef = NodeRef String Int -- NodeRef name targetIndex
data Node = Node String Node -- Node name targetNode
ref0 = NodeRef "Zero" 1
ref1 = NodeRef "One" 2
ref2 = NodeRef "Two" 0
refs = [ref0, ref1, ref2]
deref :: [NodeRef] -> Node
deref refs = head allNodes
where
deref' (NodeRef name targetIndex) = Node name (allNodes !! targetIndex)
allNodes = map deref' refs
showme :: Node -> Int -> [String]
showme _ 0 = [] …Run Code Online (Sandbox Code Playgroud)