저는 하스켈에서 정말로 새로 왔고 하프만 트리를 만들려고 노력하고 있습니다. 나무에 대한Haskell Tree in Haskell
내 정의는 다음과 같습니다
data HuffTree = Node Int HuffTree HuffTree | Leaf (Int, Char)
지금까지, 나는 그것이 트리에서 하위 트리의 새로운 트리를 반환으로 노드를 삽입하는 기능 insTree :: HuffTree -> HuffTree -> HuffTree
있습니다. makePair :: HuffTree -> HuffTree -> HuffTree
함수는 두 개의 트리를 가져 와서 원래의 두 트리를 하위 트리로 가지며 처음 두 트리의 값 합계를 값으로 갖는 새 트리를 만듭니다. 각 노드에서 값을 반환하는 함수 value :: HuffTree -> Int
이 있습니다.
makeHuffTree :: [(Int, Char)] -> HuffTree
makeHuffTree lst = merge leafList
where
leafList = map (\ ((x,c)) -> Leaf (x,c)) lst
merge [] = []
merge [t] = [t]
merge (t1 : t2 : tree) = insTree (makePair t1 t2) tree
나는 그것이이 기능에 문제가 알고 있지만 나는 그것을 처리하는 방법을 알고하지 않습니다
내 문제는 다음과 같습니다 기능 makeHuffTree :: [(Int, Char)] -> HuffTree
함께. 오류는 다음과 같습니다.
Couldn't match expected type `[a0]' with actual type `HuffTree'
In the return type of a call of `insTree'
In the expression: insTree (makePair t1 t2) tree
In an equation for `merge':
merge (t1 : t2 : tree) = insTree (makePair t1 t2) tree
이 문제를 해결하는 방법에 대한 힌트를 제공해 줄 수 있습니까?
insTree 및 makePair 함수를 게시 할 수 있습니까? –