expressions-0.4: src/Data/Expression/Utils/Indexed/Tuple.hs
{-# LANGUAGE TypeInType #-}
--------------------------------------------------------------------------------
-- |
-- Module : Data.Expression.Array
-- Copyright : (C) 2017-18 Jakub Daniel
-- License : BSD-style (see the file LICENSE)
-- Maintainer : Jakub Daniel <jakub.daniel@protonmail.com>
-- 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 ++ ")"