Рассмотрим две объявления data
:
{-# LANGUAGE GADTs #-}
data X = Int `Y` Int deriving Show
data Z where
W :: Int -> Int -> Z deriving Show
main = do
print (1 `Y` 2)
print (3 `W` 4)
Запуск вышеуказанной программы вызывает:
1 `Y` 2
W 3 4
поэтому производный show
знает, что Y
является infix и печатает его соответствующим образом. Синтаксис ::
, похоже, не позволяет инфиксности.
Есть ли способ сделать вывод компилятора show для W
как infix (кроме явного предоставления экземпляра show
для Z
)?
Желаемый результат:
1 `Y` 2
3 `W` 4