{-# LANGUAGE AllowAmbiguousTypes #-}
module Mischief.ECS.Mappable where
import Mischief.ECS.Components
import Mischief.ECS.Entities
import Mischief.ECS.Tables
class Mappable flag a b | flag a -> b where
mapTuple :: a -> b
class TryMapId flag flag' c out | flag flag' c -> out where
tryMapId :: c -> out
data RelQueryOutput out = RelQueryOutput out | InvalidRelQueryOutput
type family MapIsId c where
MapIsId (Maybe a) = False
MapIsId (Result a) = False
MapIsId (RelQueryOutput a) = False
MapIsId [a] = False
MapIsId a = True
data MapQueryVal
instance TryMapId True MapQueryVal a a where
tryMapId :: a -> a
tryMapId = a -> a
forall a. a -> a
id
instance TryMapId False MapQueryVal (Result a) a where
tryMapId :: Result a -> a
tryMapId = Result a -> a
forall a. Result a -> a
value
instance (TryMapId (MapIsId a) MapQueryVal a out) => TryMapId False MapQueryVal (Maybe a) (Maybe out) where
tryMapId :: Maybe a -> Maybe out
tryMapId = (a -> out) -> Maybe a -> Maybe out
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall (flag :: Bool) flag' c out.
TryMapId flag flag' c out =>
c -> out
forall {k} {k} (flag :: k) (flag' :: k) c out.
TryMapId flag flag' c out =>
c -> out
tryMapId @(MapIsId a) @MapQueryVal)
instance (TryMapId (MapIsId a) MapQueryVal a out) => TryMapId False MapQueryVal [a] [out] where
tryMapId :: [a] -> [out]
tryMapId = (a -> out) -> [a] -> [out]
forall a b. (a -> b) -> [a] -> [b]
map (forall (flag :: Bool) flag' c out.
TryMapId flag flag' c out =>
c -> out
forall {k} {k} (flag :: k) (flag' :: k) c out.
TryMapId flag flag' c out =>
c -> out
tryMapId @(MapIsId a) @MapQueryVal)
instance (TryMapId (MapIsId a) MapQueryVal a out) => TryMapId False MapQueryVal (RelQueryOutput a) (RelQueryOutput out) where
tryMapId :: RelQueryOutput a -> RelQueryOutput out
tryMapId (RelQueryOutput a
a) = out -> RelQueryOutput out
forall out. out -> RelQueryOutput out
RelQueryOutput (out -> RelQueryOutput out) -> out -> RelQueryOutput out
forall a b. (a -> b) -> a -> b
$ forall (flag :: Bool) flag' c out.
TryMapId flag flag' c out =>
c -> out
forall {k} {k} (flag :: k) (flag' :: k) c out.
TryMapId flag flag' c out =>
c -> out
tryMapId @(MapIsId a) @MapQueryVal a
a
tryMapId RelQueryOutput a
InvalidRelQueryOutput = RelQueryOutput out
forall out. RelQueryOutput out
InvalidRelQueryOutput
instance {-# OVERLAPPABLE #-} (TryMapId (MapIsId a) flag a out) => Mappable flag a out where
mapTuple :: a -> out
mapTuple = forall (flag :: Bool) (flag' :: k) c out.
TryMapId flag flag' c out =>
c -> out
forall {k} {k} (flag :: k) (flag' :: k) c out.
TryMapId flag flag' c out =>
c -> out
tryMapId @(MapIsId a) @flag
data MapQueryValidity
instance TryMapId True MapQueryValidity a a where
tryMapId :: a -> a
tryMapId = a -> a
forall a. a -> a
id
instance TryMapId False MapQueryValidity (Result a) (Result a) where
tryMapId :: Result a -> Result a
tryMapId = Result a -> Result a
forall a. a -> a
id
instance (TryMapId (MapIsId a) MapQueryValidity a out) => TryMapId False MapQueryValidity (RelQueryOutput a) a where
tryMapId :: RelQueryOutput a -> a
tryMapId (RelQueryOutput a
a) = a
a
tryMapId RelQueryOutput a
InvalidRelQueryOutput = a
forall a. HasCallStack => a
undefined
instance (TryMapId (MapIsId a) MapQueryValidity a out) => TryMapId False MapQueryValidity (Maybe a) (Maybe out) where
tryMapId :: Maybe a -> Maybe out
tryMapId = (a -> out) -> Maybe a -> Maybe out
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall (flag :: Bool) flag' c out.
TryMapId flag flag' c out =>
c -> out
forall {k} {k} (flag :: k) (flag' :: k) c out.
TryMapId flag flag' c out =>
c -> out
tryMapId @(MapIsId a) @MapQueryValidity)
instance (TryMapId (MapIsId a) MapQueryValidity a out) => TryMapId False MapQueryValidity [a] [out] where
tryMapId :: [a] -> [out]
tryMapId = (a -> out) -> [a] -> [out]
forall a b. (a -> b) -> [a] -> [b]
map (forall (flag :: Bool) flag' c out.
TryMapId flag flag' c out =>
c -> out
forall {k} {k} (flag :: k) (flag' :: k) c out.
TryMapId flag flag' c out =>
c -> out
tryMapId @(MapIsId a) @MapQueryValidity)
instance {-# OVERLAPPING #-} (Mappable flag a0 b0, Mappable flag a1 b1) => Mappable flag (a0, a1) (b0, b1) where
mapTuple :: (a0, a1) -> (b0, b1)
mapTuple (a0
a0, a1
a1) = (forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a0
a0, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a1
a1)
instance {-# OVERLAPPING #-} (Mappable flag a0 b0, Mappable flag a1 b1, Mappable flag a2 b2) => Mappable flag (a0, a1, a2) (b0, b1, b2) where
mapTuple :: (a0, a1, a2) -> (b0, b1, b2)
mapTuple (a0
a0, a1
a1, a2
a2) = (forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a0
a0, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a1
a1, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a2
a2)
instance {-# OVERLAPPING #-} (Mappable flag a0 b0, Mappable flag a1 b1, Mappable flag a2 b2, Mappable flag a3 b3) => Mappable flag (a0, a1, a2, a3) (b0, b1, b2, b3) where
mapTuple :: (a0, a1, a2, a3) -> (b0, b1, b2, b3)
mapTuple (a0
a0, a1
a1, a2
a2, a3
a3) = (forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a0
a0, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a1
a1, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a2
a2, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a3
a3)
instance {-# OVERLAPPING #-} (Mappable flag a0 b0, Mappable flag a1 b1, Mappable flag a2 b2, Mappable flag a3 b3, Mappable flag a4 b4) => Mappable flag (a0, a1, a2, a3, a4) (b0, b1, b2, b3, b4) where
mapTuple :: (a0, a1, a2, a3, a4) -> (b0, b1, b2, b3, b4)
mapTuple (a0
a0, a1
a1, a2
a2, a3
a3, a4
a4) = (forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a0
a0, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a1
a1, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a2
a2, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a3
a3, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a4
a4)
instance {-# OVERLAPPING #-} (Mappable flag a0 b0, Mappable flag a1 b1, Mappable flag a2 b2, Mappable flag a3 b3, Mappable flag a4 b4, Mappable flag a5 b5) => Mappable flag (a0, a1, a2, a3, a4, a5) (b0, b1, b2, b3, b4, b5) where
mapTuple :: (a0, a1, a2, a3, a4, a5) -> (b0, b1, b2, b3, b4, b5)
mapTuple (a0
a0, a1
a1, a2
a2, a3
a3, a4
a4, a5
a5) = (forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a0
a0, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a1
a1, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a2
a2, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a3
a3, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a4
a4, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a5
a5)
instance {-# OVERLAPPING #-} (Mappable flag a0 b0, Mappable flag a1 b1, Mappable flag a2 b2, Mappable flag a3 b3, Mappable flag a4 b4, Mappable flag a5 b5, Mappable flag a6 b6) => Mappable flag (a0, a1, a2, a3, a4, a5, a6) (b0, b1, b2, b3, b4, b5, b6) where
mapTuple :: (a0, a1, a2, a3, a4, a5, a6) -> (b0, b1, b2, b3, b4, b5, b6)
mapTuple (a0
a0, a1
a1, a2
a2, a3
a3, a4
a4, a5
a5, a6
a6) = (forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a0
a0, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a1
a1, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a2
a2, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a3
a3, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a4
a4, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a5
a5, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a6
a6)
instance {-# OVERLAPPING #-} (Mappable flag a0 b0, Mappable flag a1 b1, Mappable flag a2 b2, Mappable flag a3 b3, Mappable flag a4 b4, Mappable flag a5 b5, Mappable flag a6 b6, Mappable flag a7 b7) => Mappable flag (a0, a1, a2, a3, a4, a5, a6, a7) (b0, b1, b2, b3, b4, b5, b6, b7) where
mapTuple :: (a0, a1, a2, a3, a4, a5, a6, a7)
-> (b0, b1, b2, b3, b4, b5, b6, b7)
mapTuple (a0
a0, a1
a1, a2
a2, a3
a3, a4
a4, a5
a5, a6
a6, a7
a7) = (forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a0
a0, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a1
a1, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a2
a2, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a3
a3, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a4
a4, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a5
a5, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a6
a6, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a7
a7)
instance {-# OVERLAPPING #-} (Mappable flag a0 b0, Mappable flag a1 b1, Mappable flag a2 b2, Mappable flag a3 b3, Mappable flag a4 b4, Mappable flag a5 b5, Mappable flag a6 b6, Mappable flag a7 b7, Mappable flag a8 b8) => Mappable flag (a0, a1, a2, a3, a4, a5, a6, a7, a8) (b0, b1, b2, b3, b4, b5, b6, b7, b8) where
mapTuple :: (a0, a1, a2, a3, a4, a5, a6, a7, a8)
-> (b0, b1, b2, b3, b4, b5, b6, b7, b8)
mapTuple (a0
a0, a1
a1, a2
a2, a3
a3, a4
a4, a5
a5, a6
a6, a7
a7, a8
a8) = (forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a0
a0, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a1
a1, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a2
a2, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a3
a3, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a4
a4, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a5
a5, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a6
a6, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a7
a7, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a8
a8)
instance {-# OVERLAPPING #-} (Mappable flag a0 b0, Mappable flag a1 b1, Mappable flag a2 b2, Mappable flag a3 b3, Mappable flag a4 b4, Mappable flag a5 b5, Mappable flag a6 b6, Mappable flag a7 b7, Mappable flag a8 b8, Mappable flag a9 b9) => Mappable flag (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9) where
mapTuple :: (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)
-> (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9)
mapTuple (a0
a0, a1
a1, a2
a2, a3
a3, a4
a4, a5
a5, a6
a6, a7
a7, a8
a8, a9
a9) = (forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a0
a0, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a1
a1, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a2
a2, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a3
a3, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a4
a4, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a5
a5, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a6
a6, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a7
a7, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a8
a8, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a9
a9)
instance {-# OVERLAPPING #-} (Mappable flag a0 b0, Mappable flag a1 b1, Mappable flag a2 b2, Mappable flag a3 b3, Mappable flag a4 b4, Mappable flag a5 b5, Mappable flag a6 b6, Mappable flag a7 b7, Mappable flag a8 b8, Mappable flag a9 b9, Mappable flag a10 b10) => Mappable flag (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10) where
mapTuple :: (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
-> (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10)
mapTuple (a0
a0, a1
a1, a2
a2, a3
a3, a4
a4, a5
a5, a6
a6, a7
a7, a8
a8, a9
a9, a10
a10) = (forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a0
a0, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a1
a1, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a2
a2, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a3
a3, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a4
a4, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a5
a5, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a6
a6, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a7
a7, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a8
a8, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a9
a9, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a10
a10)
instance {-# OVERLAPPING #-} (Mappable flag a0 b0, Mappable flag a1 b1, Mappable flag a2 b2, Mappable flag a3 b3, Mappable flag a4 b4, Mappable flag a5 b5, Mappable flag a6 b6, Mappable flag a7 b7, Mappable flag a8 b8, Mappable flag a9 b9, Mappable flag a10 b10, Mappable flag a11 b11) => Mappable flag (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11) where
mapTuple :: (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)
-> (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11)
mapTuple (a0
a0, a1
a1, a2
a2, a3
a3, a4
a4, a5
a5, a6
a6, a7
a7, a8
a8, a9
a9, a10
a10, a11
a11) = (forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a0
a0, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a1
a1, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a2
a2, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a3
a3, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a4
a4, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a5
a5, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a6
a6, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a7
a7, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a8
a8, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a9
a9, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a10
a10, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a11
a11)
instance {-# OVERLAPPING #-} (Mappable flag a0 b0, Mappable flag a1 b1, Mappable flag a2 b2, Mappable flag a3 b3, Mappable flag a4 b4, Mappable flag a5 b5, Mappable flag a6 b6, Mappable flag a7 b7, Mappable flag a8 b8, Mappable flag a9 b9, Mappable flag a10 b10, Mappable flag a11 b11, Mappable flag a12 b12) => Mappable flag (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12) where
mapTuple :: (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)
-> (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12)
mapTuple (a0
a0, a1
a1, a2
a2, a3
a3, a4
a4, a5
a5, a6
a6, a7
a7, a8
a8, a9
a9, a10
a10, a11
a11, a12
a12) = (forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a0
a0, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a1
a1, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a2
a2, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a3
a3, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a4
a4, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a5
a5, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a6
a6, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a7
a7, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a8
a8, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a9
a9, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a10
a10, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a11
a11, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a12
a12)
instance {-# OVERLAPPING #-} (Mappable flag a0 b0, Mappable flag a1 b1, Mappable flag a2 b2, Mappable flag a3 b3, Mappable flag a4 b4, Mappable flag a5 b5, Mappable flag a6 b6, Mappable flag a7 b7, Mappable flag a8 b8, Mappable flag a9 b9, Mappable flag a10 b10, Mappable flag a11 b11, Mappable flag a12 b12, Mappable flag a13 b13) => Mappable flag (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13) where
mapTuple :: (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
-> (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13)
mapTuple (a0
a0, a1
a1, a2
a2, a3
a3, a4
a4, a5
a5, a6
a6, a7
a7, a8
a8, a9
a9, a10
a10, a11
a11, a12
a12, a13
a13) = (forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a0
a0, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a1
a1, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a2
a2, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a3
a3, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a4
a4, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a5
a5, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a6
a6, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a7
a7, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a8
a8, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a9
a9, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a10
a10, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a11
a11, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a12
a12, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a13
a13)
instance {-# OVERLAPPING #-} (Mappable flag a0 b0, Mappable flag a1 b1, Mappable flag a2 b2, Mappable flag a3 b3, Mappable flag a4 b4, Mappable flag a5 b5, Mappable flag a6 b6, Mappable flag a7 b7, Mappable flag a8 b8, Mappable flag a9 b9, Mappable flag a10 b10, Mappable flag a11 b11, Mappable flag a12 b12, Mappable flag a13 b13, Mappable flag a14 b14) => Mappable flag (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14) where
mapTuple :: (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
-> (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13,
b14)
mapTuple (a0
a0, a1
a1, a2
a2, a3
a3, a4
a4, a5
a5, a6
a6, a7
a7, a8
a8, a9
a9, a10
a10, a11
a11, a12
a12, a13
a13, a14
a14) = (forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a0
a0, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a1
a1, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a2
a2, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a3
a3, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a4
a4, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a5
a5, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a6
a6, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a7
a7, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a8
a8, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a9
a9, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a10
a10, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a11
a11, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a12
a12, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a13
a13, forall (flag :: k) a b. Mappable flag a b => a -> b
forall {k} (flag :: k) a b. Mappable flag a b => a -> b
mapTuple @flag a14
a14)