У меня есть этот тип данных:Избавление от ключевого слова Graph в Haskell
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 х Тип: Сеть б * Не соответствует: [Узел a] -> Сеть a
Можете ли вы рассказать мне, как я могу решить эту проблему?