show
возвращает строку, а затем, когда вы помещаете ее в GHCi, она делает print . show $ (P 5 6)
, что эквивалентно putStrLn . show . show $ (P 5 6)
, который будет печатать все символы.
Проблема в двойном шоу.
То, что вы хотите сделать, это использовать только печать, как print (P 5 6)
. Если вы используете GHCi, print
автоматически применяется к каждому выражению, поэтому вам нужно всего лишь набрать
Prelude> P 5 6