{-# LANGUAGE TypeOperators #-}

module Data.Predicate.Product where

infixr 5 :::

-- | A data-type for combining results of predicate evaluations.
data a ::: b = a ::: b deriving ((a ::: b) -> (a ::: b) -> Bool
((a ::: b) -> (a ::: b) -> Bool)
-> ((a ::: b) -> (a ::: b) -> Bool) -> Eq (a ::: b)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall a b. (Eq a, Eq b) => (a ::: b) -> (a ::: b) -> Bool
/= :: (a ::: b) -> (a ::: b) -> Bool
$c/= :: forall a b. (Eq a, Eq b) => (a ::: b) -> (a ::: b) -> Bool
== :: (a ::: b) -> (a ::: b) -> Bool
$c== :: forall a b. (Eq a, Eq b) => (a ::: b) -> (a ::: b) -> Bool
Eq, Int -> (a ::: b) -> ShowS
[a ::: b] -> ShowS
(a ::: b) -> String
(Int -> (a ::: b) -> ShowS)
-> ((a ::: b) -> String) -> ([a ::: b] -> ShowS) -> Show (a ::: b)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall a b. (Show a, Show b) => Int -> (a ::: b) -> ShowS
forall a b. (Show a, Show b) => [a ::: b] -> ShowS
forall a b. (Show a, Show b) => (a ::: b) -> String
showList :: [a ::: b] -> ShowS
$cshowList :: forall a b. (Show a, Show b) => [a ::: b] -> ShowS
show :: (a ::: b) -> String
$cshow :: forall a b. (Show a, Show b) => (a ::: b) -> String
showsPrec :: Int -> (a ::: b) -> ShowS
$cshowsPrec :: forall a b. (Show a, Show b) => Int -> (a ::: b) -> ShowS
Show)

-- | @flip ($)@ - useful in combination with indexed access, e.g.
-- @('x' ::: True ::: False)#_2@ yields @True@.
(#) :: a -> (a -> b) -> b
# :: a -> (a -> b) -> b
(#) = ((a -> b) -> a -> b) -> a -> (a -> b) -> b
forall a b c. (a -> b -> c) -> b -> a -> c
flip (a -> b) -> a -> b
forall a b. (a -> b) -> a -> b
($)

hd :: a ::: b -> a
hd :: (a ::: b) -> a
hd (a
a ::: b
_) = a
a
{-# INLINE hd #-}

tl :: a ::: b -> b
tl :: (a ::: b) -> b
tl (a
_ ::: b
b) = b
b
{-# INLINE tl #-}

-----------------------------------------------------------------------------
-- Indexed access (except for last element)

_1 :: a ::: b -> a
_1 :: (a ::: b) -> a
_1 = (a ::: b) -> a
forall a b. (a ::: b) -> a
_1'
{-# INLINE _1 #-}

_2 :: a ::: b ::: c -> b
_2 :: (a ::: (b ::: c)) -> b
_2 = (b ::: c) -> b
forall a b. (a ::: b) -> a
hd ((b ::: c) -> b)
-> ((a ::: (b ::: c)) -> b ::: c) -> (a ::: (b ::: c)) -> b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a ::: (b ::: c)) -> b ::: c
forall a b. (a ::: b) -> b
_2'
{-# INLINE _2 #-}

_3 :: a ::: b ::: c ::: d -> c
_3 :: (a ::: (b ::: (c ::: d))) -> c
_3 = (c ::: d) -> c
forall a b. (a ::: b) -> a
hd ((c ::: d) -> c)
-> ((a ::: (b ::: (c ::: d))) -> c ::: d)
-> (a ::: (b ::: (c ::: d)))
-> c
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a ::: (b ::: (c ::: d))) -> c ::: d
forall a b c. (a ::: (b ::: c)) -> c
_3'
{-# INLINE _3 #-}

_4 :: a ::: b ::: c ::: d ::: e -> d
_4 :: (a ::: (b ::: (c ::: (d ::: e)))) -> d
_4 = (d ::: e) -> d
forall a b. (a ::: b) -> a
hd ((d ::: e) -> d)
-> ((a ::: (b ::: (c ::: (d ::: e)))) -> d ::: e)
-> (a ::: (b ::: (c ::: (d ::: e))))
-> d
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a ::: (b ::: (c ::: (d ::: e)))) -> d ::: e
forall a b c d. (a ::: (b ::: (c ::: d))) -> d
_4'
{-# INLINE _4 #-}

_5 :: a ::: b ::: c ::: d ::: e ::: f -> e
_5 :: (a ::: (b ::: (c ::: (d ::: (e ::: f))))) -> e
_5 = (e ::: f) -> e
forall a b. (a ::: b) -> a
hd ((e ::: f) -> e)
-> ((a ::: (b ::: (c ::: (d ::: (e ::: f))))) -> e ::: f)
-> (a ::: (b ::: (c ::: (d ::: (e ::: f)))))
-> e
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a ::: (b ::: (c ::: (d ::: (e ::: f))))) -> e ::: f
forall a b c d e. (a ::: (b ::: (c ::: (d ::: e)))) -> e
_5'
{-# INLINE _5 #-}

_6 :: a ::: b ::: c ::: d ::: e ::: f ::: g -> f
_6 :: (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: g)))))) -> f
_6 = (f ::: g) -> f
forall a b. (a ::: b) -> a
hd ((f ::: g) -> f)
-> ((a ::: (b ::: (c ::: (d ::: (e ::: (f ::: g)))))) -> f ::: g)
-> (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: g))))))
-> f
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: g)))))) -> f ::: g
forall a b c d e f. (a ::: (b ::: (c ::: (d ::: (e ::: f))))) -> f
_6'
{-# INLINE _6 #-}

_7 :: a ::: b ::: c ::: d ::: e ::: f ::: g ::: h -> g
_7 :: (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: h))))))) -> g
_7 = (g ::: h) -> g
forall a b. (a ::: b) -> a
hd ((g ::: h) -> g)
-> ((a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: h)))))))
    -> g ::: h)
-> (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: h)))))))
-> g
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: h)))))))
-> g ::: h
forall a b c d e f g.
(a ::: (b ::: (c ::: (d ::: (e ::: (f ::: g)))))) -> g
_7'
{-# INLINE _7 #-}

_8 :: a ::: b ::: c ::: d ::: e ::: f ::: g ::: h ::: i -> h
_8 :: (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))))
-> h
_8 = (h ::: i) -> h
forall a b. (a ::: b) -> a
hd ((h ::: i) -> h)
-> ((a
     ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))))
    -> h ::: i)
-> (a
    ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))))
-> h
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))))
-> h ::: i
forall a b c d e f g h.
(a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: h))))))) -> h
_8'
{-# INLINE _8 #-}

_9 :: a ::: b ::: c ::: d ::: e ::: f ::: g ::: h ::: i ::: j -> i
_9 :: (a
 ::: (b
      ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: (i ::: j)))))))))
-> i
_9 = (i ::: j) -> i
forall a b. (a ::: b) -> a
hd ((i ::: j) -> i)
-> ((a
     ::: (b
          ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: (i ::: j)))))))))
    -> i ::: j)
-> (a
    ::: (b
         ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: (i ::: j)))))))))
-> i
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a
 ::: (b
      ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: (i ::: j)))))))))
-> i ::: j
forall a b c d e f g h i.
(a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))))
-> i
_9'
{-# INLINE _9 #-}

-----------------------------------------------------------------------------
-- Access last element

_1' :: a ::: b -> a
_1' :: (a ::: b) -> a
_1' = (a ::: b) -> a
forall a b. (a ::: b) -> a
hd
{-# INLINE _1' #-}

_2' :: a ::: b -> b
_2' :: (a ::: b) -> b
_2' = (a ::: b) -> b
forall a b. (a ::: b) -> b
tl
{-# INLINE _2' #-}

_3' :: a ::: b ::: c -> c
_3' :: (a ::: (b ::: c)) -> c
_3' = (b ::: c) -> c
forall a b. (a ::: b) -> b
tl ((b ::: c) -> c)
-> ((a ::: (b ::: c)) -> b ::: c) -> (a ::: (b ::: c)) -> c
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a ::: (b ::: c)) -> b ::: c
forall a b. (a ::: b) -> b
tl
{-# INLINE _3' #-}

_4' :: a ::: b ::: c ::: d -> d
_4' :: (a ::: (b ::: (c ::: d))) -> d
_4' = (c ::: d) -> d
forall a b. (a ::: b) -> b
tl ((c ::: d) -> d)
-> ((a ::: (b ::: (c ::: d))) -> c ::: d)
-> (a ::: (b ::: (c ::: d)))
-> d
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (b ::: (c ::: d)) -> c ::: d
forall a b. (a ::: b) -> b
tl ((b ::: (c ::: d)) -> c ::: d)
-> ((a ::: (b ::: (c ::: d))) -> b ::: (c ::: d))
-> (a ::: (b ::: (c ::: d)))
-> c ::: d
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a ::: (b ::: (c ::: d))) -> b ::: (c ::: d)
forall a b. (a ::: b) -> b
tl
{-# INLINE _4' #-}

_5' :: a ::: b ::: c ::: d ::: e -> e
_5' :: (a ::: (b ::: (c ::: (d ::: e)))) -> e
_5' = (d ::: e) -> e
forall a b. (a ::: b) -> b
tl ((d ::: e) -> e)
-> ((a ::: (b ::: (c ::: (d ::: e)))) -> d ::: e)
-> (a ::: (b ::: (c ::: (d ::: e))))
-> e
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (c ::: (d ::: e)) -> d ::: e
forall a b. (a ::: b) -> b
tl ((c ::: (d ::: e)) -> d ::: e)
-> ((a ::: (b ::: (c ::: (d ::: e)))) -> c ::: (d ::: e))
-> (a ::: (b ::: (c ::: (d ::: e))))
-> d ::: e
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (b ::: (c ::: (d ::: e))) -> c ::: (d ::: e)
forall a b. (a ::: b) -> b
tl ((b ::: (c ::: (d ::: e))) -> c ::: (d ::: e))
-> ((a ::: (b ::: (c ::: (d ::: e)))) -> b ::: (c ::: (d ::: e)))
-> (a ::: (b ::: (c ::: (d ::: e))))
-> c ::: (d ::: e)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a ::: (b ::: (c ::: (d ::: e)))) -> b ::: (c ::: (d ::: e))
forall a b. (a ::: b) -> b
tl
{-# INLINE _5' #-}

_6' :: a ::: b ::: c ::: d ::: e ::: f -> f
_6' :: (a ::: (b ::: (c ::: (d ::: (e ::: f))))) -> f
_6' = (e ::: f) -> f
forall a b. (a ::: b) -> b
tl ((e ::: f) -> f)
-> ((a ::: (b ::: (c ::: (d ::: (e ::: f))))) -> e ::: f)
-> (a ::: (b ::: (c ::: (d ::: (e ::: f)))))
-> f
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (d ::: (e ::: f)) -> e ::: f
forall a b. (a ::: b) -> b
tl ((d ::: (e ::: f)) -> e ::: f)
-> ((a ::: (b ::: (c ::: (d ::: (e ::: f))))) -> d ::: (e ::: f))
-> (a ::: (b ::: (c ::: (d ::: (e ::: f)))))
-> e ::: f
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (c ::: (d ::: (e ::: f))) -> d ::: (e ::: f)
forall a b. (a ::: b) -> b
tl ((c ::: (d ::: (e ::: f))) -> d ::: (e ::: f))
-> ((a ::: (b ::: (c ::: (d ::: (e ::: f)))))
    -> c ::: (d ::: (e ::: f)))
-> (a ::: (b ::: (c ::: (d ::: (e ::: f)))))
-> d ::: (e ::: f)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (b ::: (c ::: (d ::: (e ::: f)))) -> c ::: (d ::: (e ::: f))
forall a b. (a ::: b) -> b
tl ((b ::: (c ::: (d ::: (e ::: f)))) -> c ::: (d ::: (e ::: f)))
-> ((a ::: (b ::: (c ::: (d ::: (e ::: f)))))
    -> b ::: (c ::: (d ::: (e ::: f))))
-> (a ::: (b ::: (c ::: (d ::: (e ::: f)))))
-> c ::: (d ::: (e ::: f))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a ::: (b ::: (c ::: (d ::: (e ::: f)))))
-> b ::: (c ::: (d ::: (e ::: f)))
forall a b. (a ::: b) -> b
tl
{-# INLINE _6' #-}

_7' :: a ::: b ::: c ::: d ::: e ::: f ::: g -> g
_7' :: (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: g)))))) -> g
_7' = (f ::: g) -> g
forall a b. (a ::: b) -> b
tl ((f ::: g) -> g)
-> ((a ::: (b ::: (c ::: (d ::: (e ::: (f ::: g)))))) -> f ::: g)
-> (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: g))))))
-> g
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (e ::: (f ::: g)) -> f ::: g
forall a b. (a ::: b) -> b
tl ((e ::: (f ::: g)) -> f ::: g)
-> ((a ::: (b ::: (c ::: (d ::: (e ::: (f ::: g))))))
    -> e ::: (f ::: g))
-> (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: g))))))
-> f ::: g
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (d ::: (e ::: (f ::: g))) -> e ::: (f ::: g)
forall a b. (a ::: b) -> b
tl ((d ::: (e ::: (f ::: g))) -> e ::: (f ::: g))
-> ((a ::: (b ::: (c ::: (d ::: (e ::: (f ::: g))))))
    -> d ::: (e ::: (f ::: g)))
-> (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: g))))))
-> e ::: (f ::: g)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (c ::: (d ::: (e ::: (f ::: g)))) -> d ::: (e ::: (f ::: g))
forall a b. (a ::: b) -> b
tl ((c ::: (d ::: (e ::: (f ::: g)))) -> d ::: (e ::: (f ::: g)))
-> ((a ::: (b ::: (c ::: (d ::: (e ::: (f ::: g))))))
    -> c ::: (d ::: (e ::: (f ::: g))))
-> (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: g))))))
-> d ::: (e ::: (f ::: g))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (b ::: (c ::: (d ::: (e ::: (f ::: g)))))
-> c ::: (d ::: (e ::: (f ::: g)))
forall a b. (a ::: b) -> b
tl ((b ::: (c ::: (d ::: (e ::: (f ::: g)))))
 -> c ::: (d ::: (e ::: (f ::: g))))
-> ((a ::: (b ::: (c ::: (d ::: (e ::: (f ::: g))))))
    -> b ::: (c ::: (d ::: (e ::: (f ::: g)))))
-> (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: g))))))
-> c ::: (d ::: (e ::: (f ::: g)))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: g))))))
-> b ::: (c ::: (d ::: (e ::: (f ::: g))))
forall a b. (a ::: b) -> b
tl
{-# INLINE _7' #-}

_8' :: a ::: b ::: c ::: d ::: e ::: f ::: g ::: h -> h
_8' :: (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: h))))))) -> h
_8' = (g ::: h) -> h
forall a b. (a ::: b) -> b
tl ((g ::: h) -> h)
-> ((a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: h)))))))
    -> g ::: h)
-> (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: h)))))))
-> h
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (f ::: (g ::: h)) -> g ::: h
forall a b. (a ::: b) -> b
tl ((f ::: (g ::: h)) -> g ::: h)
-> ((a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: h)))))))
    -> f ::: (g ::: h))
-> (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: h)))))))
-> g ::: h
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (e ::: (f ::: (g ::: h))) -> f ::: (g ::: h)
forall a b. (a ::: b) -> b
tl ((e ::: (f ::: (g ::: h))) -> f ::: (g ::: h))
-> ((a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: h)))))))
    -> e ::: (f ::: (g ::: h)))
-> (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: h)))))))
-> f ::: (g ::: h)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (d ::: (e ::: (f ::: (g ::: h)))) -> e ::: (f ::: (g ::: h))
forall a b. (a ::: b) -> b
tl ((d ::: (e ::: (f ::: (g ::: h)))) -> e ::: (f ::: (g ::: h)))
-> ((a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: h)))))))
    -> d ::: (e ::: (f ::: (g ::: h))))
-> (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: h)))))))
-> e ::: (f ::: (g ::: h))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (c ::: (d ::: (e ::: (f ::: (g ::: h)))))
-> d ::: (e ::: (f ::: (g ::: h)))
forall a b. (a ::: b) -> b
tl ((c ::: (d ::: (e ::: (f ::: (g ::: h)))))
 -> d ::: (e ::: (f ::: (g ::: h))))
-> ((a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: h)))))))
    -> c ::: (d ::: (e ::: (f ::: (g ::: h)))))
-> (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: h)))))))
-> d ::: (e ::: (f ::: (g ::: h)))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: h))))))
-> c ::: (d ::: (e ::: (f ::: (g ::: h))))
forall a b. (a ::: b) -> b
tl ((b ::: (c ::: (d ::: (e ::: (f ::: (g ::: h))))))
 -> c ::: (d ::: (e ::: (f ::: (g ::: h)))))
-> ((a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: h)))))))
    -> b ::: (c ::: (d ::: (e ::: (f ::: (g ::: h))))))
-> (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: h)))))))
-> c ::: (d ::: (e ::: (f ::: (g ::: h))))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: h)))))))
-> b ::: (c ::: (d ::: (e ::: (f ::: (g ::: h)))))
forall a b. (a ::: b) -> b
tl
{-# INLINE _8' #-}

_9' :: a ::: b ::: c ::: d ::: e ::: f ::: g ::: h ::: i -> i
_9' :: (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))))
-> i
_9' = (h ::: i) -> i
forall a b. (a ::: b) -> b
tl ((h ::: i) -> i)
-> ((a
     ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))))
    -> h ::: i)
-> (a
    ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))))
-> i
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (g ::: (h ::: i)) -> h ::: i
forall a b. (a ::: b) -> b
tl ((g ::: (h ::: i)) -> h ::: i)
-> ((a
     ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))))
    -> g ::: (h ::: i))
-> (a
    ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))))
-> h ::: i
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (f ::: (g ::: (h ::: i))) -> g ::: (h ::: i)
forall a b. (a ::: b) -> b
tl ((f ::: (g ::: (h ::: i))) -> g ::: (h ::: i))
-> ((a
     ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))))
    -> f ::: (g ::: (h ::: i)))
-> (a
    ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))))
-> g ::: (h ::: i)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (e ::: (f ::: (g ::: (h ::: i)))) -> f ::: (g ::: (h ::: i))
forall a b. (a ::: b) -> b
tl ((e ::: (f ::: (g ::: (h ::: i)))) -> f ::: (g ::: (h ::: i)))
-> ((a
     ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))))
    -> e ::: (f ::: (g ::: (h ::: i))))
-> (a
    ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))))
-> f ::: (g ::: (h ::: i))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (d ::: (e ::: (f ::: (g ::: (h ::: i)))))
-> e ::: (f ::: (g ::: (h ::: i)))
forall a b. (a ::: b) -> b
tl ((d ::: (e ::: (f ::: (g ::: (h ::: i)))))
 -> e ::: (f ::: (g ::: (h ::: i))))
-> ((a
     ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))))
    -> d ::: (e ::: (f ::: (g ::: (h ::: i)))))
-> (a
    ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))))
-> e ::: (f ::: (g ::: (h ::: i)))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))
-> d ::: (e ::: (f ::: (g ::: (h ::: i))))
forall a b. (a ::: b) -> b
tl ((c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))
 -> d ::: (e ::: (f ::: (g ::: (h ::: i)))))
-> ((a
     ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))))
    -> c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))
-> (a
    ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))))
-> d ::: (e ::: (f ::: (g ::: (h ::: i))))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i)))))))
-> c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i)))))
forall a b. (a ::: b) -> b
tl ((b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i)))))))
 -> c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))
-> ((a
     ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))))
    -> b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i)))))))
-> (a
    ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))))
-> c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i)))))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a ::: (b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))))
-> b ::: (c ::: (d ::: (e ::: (f ::: (g ::: (h ::: i))))))
forall a b. (a ::: b) -> b
tl
{-# INLINE _9' #-}