Вам нужно сначала поместить конструктор данных здесь, поэтому он должен быть:
mirror :: Tree a -> Tree a
mirror(Bin l v r) = <b>Bin</b> (mirror r) v (mirror l)
Используя (mirror r) Bin v mirror l
, вы вызываете Bin
в качестве параметра для результата mirror r
, поэтому((mirror r) Bin)
. Но это не имеет особого смысла.
Обратите внимание, что вам также необходимо добавить регистр для Tip
, поскольку сейчас ваша функция не охватывает все возможные значения.