Я пытаюсь написать функцию Haskell, которая принимает дерево и заменяет каждый узел парой, содержащей высоту поддерева в этом узле и исходный узел
В зависимости от того, где я размещаюмоя скобка в последней строке кода, я получаю всевозможные ошибки. Я знаю, что моя функция высоты работает, потому что я использовал ее для различных функций ранее. Я явно не правильно группирую вещи, потому что я получил все: от недостаточно аргументов до максимума, до слишком большого количества аргументов для пар. Пожалуйста помоги! Я действительно застрял здесь и не прогрессирую, потому что я просто перемещаю скобки вперед и назад.
data Tree a = Tip | Bin (Tree a) a (Tree a) deriving (Show, Eq)
getHeight :: Tree a -> Integer
getHeight Tip = 0
getHeight (Bin l _ r) = (max (getHeight l) (getHeight r)) +1
pairs :: Tree a -> Tree (Integer, a)
pairs Tip = Tip
pairs (Bin l x r) = (Bin (pairs l) ((max (left right)) x) (pairs r))
where left = (getHeight l)
right = (getHeight r)