私はこのデータ型を持っています:
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
この問題を解決する方法を教えてください。