1{-# LANGUAGE DataKinds #-} 2{-# LANGUAGE GADTs #-} 3{-# LANGUAGE KindSignatures #-} 4{-# LANGUAGE TypeOperators #-} 5 6data A = A 7data B = B 8data X = X 9data Y = Y 10 11 12data Pairrow ax by where 13 Pairrow :: (a -> b) -> (x -> y) -> Pairrow '(a, x) '(b, y) 14 15test2 :: (A -> B) -> (X -> Y) -> Pairrow '(A, X) '(B, Y) 16test2 = _ 17 18