【发布时间】:2013-12-08 01:10:34
【问题描述】:
我有这个数据类型:
data Node a = Node
{ label :: a,
adjacent :: [(a,Int)] } deriving (Show, Eq)
data Network a = Graph [Node a] deriving (Show, Eq)
我有一个函数可以将 Graph 转换为节点列表:
deGraph :: ([Node a] -> Network a) -> [Node a] -> [Node a]
deGraph _ x = x
for example :
Main> deGraph Graph [ ( Node 'a' [ ( 'b' , 3 ) , ( 'c' ,2 ) ] ) , ( Node 'b' [ ('c' , 3 ) ] ) , ( Node 'c' [] ) ]
[Node {label = 'a', adjacent = [('b',3),('c',2)]},Node {label = 'b', adjacent = [('c',3)]},Node {label = 'c', adjacent = []}]
但是当我在这样的函数中使用函数时:
func1 (Graph x) = deGraph (Graph x)
我收到此错误:
ERROR "./Network.hs":14 - 应用程序中的类型错误 * 表达式:deGraph (Graph x) 术语:图 x 类型:网络 b * 不匹配:[节点 a] -> 网络 a
你能告诉我如何解决这个问题吗?
【问题讨论】:
标签: haskell