packages feed

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 ++ ")"