考虑两个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
是中缀并相应地打印它。::
语法似乎不允许中缀。
有什么方法可以让编译器将 show for 派生为W
中缀,(除了显式地为 提供一个show
实例Z
)?所需的输出是
1 `Y` 2
3 `W` 4