{-# LANGUAGE TypeInType #-} -------------------------------------------------------------------------------- -- | -- Module : Data.Expression.Array -- Copyright : (C) 2017-18 Jakub Daniel -- License : BSD-style (see the file LICENSE) -- Maintainer : Jakub Daniel -- Stability : experimental -------------------------------------------------------------------------------- module Data.Expression.Utils.Indexed.Tuple where newtype IT2 (a :: k -> *) (b :: k -> *) (i :: k) = IT2 { getIT2 :: (a i, b i) } newtype IT3 (a :: k -> *) (b :: k -> *) (c :: k -> *) (i :: k) = IT3 { getIT3 :: (a i, b i, c i) } newtype IT4 (a :: k -> *) (b :: k -> *) (c :: k -> *) (d :: k -> *) (i :: k) = IT4 { getIT4 :: (a i, b i, c i, d i) } newtype IT5 (a :: k -> *) (b :: k -> *) (c :: k -> *) (d :: k -> *) (e :: k -> *) (i :: k) = IT5 { getIT5 :: (a i, b i, c i, d i, e i) } newtype IT6 (a :: k -> *) (b :: k -> *) (c :: k -> *) (d :: k -> *) (e :: k -> *) (f :: k -> *) (i :: k) = IT6 { getIT6 :: (a i, b i, c i, d i, e i, f i) } newtype IT7 (a :: k -> *) (b :: k -> *) (c :: k -> *) (d :: k -> *) (e :: k -> *) (f :: k -> *) (g :: k -> *) (i :: k) = IT7 { getIT7 :: (a i, b i, c i, d i, e i, f i, g i) } newtype IT8 (a :: k -> *) (b :: k -> *) (c :: k -> *) (d :: k -> *) (e :: k -> *) (f :: k -> *) (g :: k -> *) (h :: k -> *) (i :: k) = IT8 { getIT8 :: (a i, b i, c i, d i, e i, f i, g i, h i) } instance ( Show (a i), Show (b i) ) => Show (IT2 a b i) where show (IT2 (a, b)) = "(" ++ show a ++ ", " ++ show b ++ ")"