我已经编写了自己的基于邻接矩阵的图实现并创建了Read
该类的实例。
我的图表采用类型作为输入,这将是边的类型。
如果我尝试表达
read " - - 8 \n - 9 - \n 1 2 3" :: GraphADJ Int
它工作得很好(它是一个有 3 个节点的图,边缘从第一个节点到第三个,从第二个到第二个,从第三个到所有节点)。
我想要做的是能够不告诉类型推断边缘的类型,而是将它们放入上下文中(如 in read"4"+3
)。
我有一个函数insertEdge
,它需要一个图表、几个节点和新边。
insertEdge :: Graph g n e => g -> (n, n) -> e -> g
(是作为实例Graph
的图的通用类)GraphADJ
所以当我尝试做
insertEdge (read " - - 8 \n - 9 - \n 1 2 3" :: GraphADJ Int) (1,2) 3
它工作得很好,但如果我不明确类型,我会得到错误
Ambiguous type variables
。
我是忘记了什么Read
还是遗漏了什么?