相关疑难解决方法(0)

你如何在Haskell中表示图形?

使用代数数据类型表示haskell中的树或列表很容易.但是你会怎么用印刷术来表示图形呢?看来你需要有指针.我猜你可以有类似的东西

type Nodetag = String
type Neighbours = [Nodetag]
data Node a = Node a Nodetag Neighbours
Run Code Online (Sandbox Code Playgroud)

这是可行的.然而感觉有点脱钩; 结构中不同节点之间的链接并不真正"感觉"像列表中当前上一个和下一个元素之间的链接一样,或者树中节点的父节点和子节点之间的链接.我有一种预感,即在我定义的图形上进行代数操作会受到通过标签系统引入的间接级别的阻碍.

主要是这种怀疑的感觉和不雅的感觉使我提出这个问题.在Haskell中定义图形是否有更好/更优化的方式?或者我偶然发现了本质上坚硬/根本的东西?递归数据结构很好,但这似乎是另一回事.自引用数据结构,与树和列表的自引用方式不同.它就像列表和树在类型级别是自引用的,但是图形在值级别是自引用的.

那真正发生了什么?

haskell types functional-programming graph algebraic-data-types

118
推荐指数
7
解决办法
3万
查看次数