Примечание: есть функция Data.List.intersperse
для помещения значения между элементами списка.
show (Node t l r) = concat $ intersperse ", " [show t, show l, show r]
Или короче, как отметил Хаммар:
show (Node t l r) = intercalate ", " [show t, show l, show r]
К сожалению, вы не можете написать map show [t, l, r]
, поскольку элементы списка должны иметь уникальный тип.