Copyright | (C) 2020 mniip |
---|---|
License | MIT |
Maintainer | mniip <mniip@mniip.com> |
Stability | experimental |
Portability | non-portable |
Safe Haskell | None |
Language | Haskell2010 |
Data.Tuple.Unboxed.Rep
Description
This module provides an ad-hoc polymorphic alternative to the functions in Data.Tuple.Unboxed. The functions have the same basic signature, but using GHC 8.0+ features they are made parametrically polymorphic within each fixed representation/calling convention.
This module defines instances for all calling conventions that have ever come up in GHC.Prim but in principle other cases could be added too.
Documentation
class RepCompose1 (r0 :: RuntimeRep) (r1 :: RuntimeRep) where Source #
Methods
repCompose1 :: forall (a :: TYPE r0) (b :: TYPE r1) (r :: *). (a -> (#b#)) -> a -> (b -> r) -> r Source #
repDecompose1 :: forall (a :: TYPE r0) (b :: TYPE r1) (r :: *). (a -> (b -> (#b#)) -> (#b#)) -> a -> (#b#) Source #
Instances
RepCompose1 LiftedRep LiftedRep Source # | |
Defined in Data.Tuple.Unboxed.Rep Methods repCompose1 :: (a -> (#b#)) -> a -> (b -> r) -> r Source # repDecompose1 :: (a -> (b -> (#b#)) -> (#b#)) -> a -> (#b#) Source # | |
RepCompose1 UnliftedRep LiftedRep Source # | |
Defined in Data.Tuple.Unboxed.Rep Methods repCompose1 :: (a -> (#b#)) -> a -> (b -> r) -> r Source # repDecompose1 :: (a -> (b -> (#b#)) -> (#b#)) -> a -> (#b#) Source # | |
RepCompose1 IntRep LiftedRep Source # | |
Defined in Data.Tuple.Unboxed.Rep Methods repCompose1 :: (a -> (#b#)) -> a -> (b -> r) -> r Source # repDecompose1 :: (a -> (b -> (#b#)) -> (#b#)) -> a -> (#b#) Source # | |
RepCompose1 WordRep LiftedRep Source # | |
Defined in Data.Tuple.Unboxed.Rep Methods repCompose1 :: (a -> (#b#)) -> a -> (b -> r) -> r Source # repDecompose1 :: (a -> (b -> (#b#)) -> (#b#)) -> a -> (#b#) Source # | |
RepCompose1 AddrRep LiftedRep Source # | |
Defined in Data.Tuple.Unboxed.Rep Methods repCompose1 :: (a -> (#b#)) -> a -> (b -> r) -> r Source # repDecompose1 :: (a -> (b -> (#b#)) -> (#b#)) -> a -> (#b#) Source # |
class RepCompose2 (r0 :: RuntimeRep) (r1 :: RuntimeRep) (r2 :: RuntimeRep) where Source #
Methods
repCompose2 :: forall (a :: TYPE r0) (b :: TYPE r1) (c :: TYPE r2) (r :: *). (a -> (#b, c#)) -> a -> (b -> c -> r) -> r Source #
repDecompose2 :: forall (a :: TYPE r0) (b :: TYPE r1) (c :: TYPE r2) (r :: *). (a -> (b -> c -> (#b, c#)) -> (#b, c#)) -> a -> (#b, c#) Source #
Instances
RepCompose2 LiftedRep UnliftedRep UnliftedRep Source # | |
Defined in Data.Tuple.Unboxed.Rep Methods repCompose2 :: (a -> (#b, c#)) -> a -> (b -> c -> r) -> r Source # repDecompose2 :: (a -> (b -> c -> (#b, c#)) -> (#b, c#)) -> a -> (#b, c#) Source # | |
RepCompose2 UnliftedRep IntRep UnliftedRep Source # | |
Defined in Data.Tuple.Unboxed.Rep Methods repCompose2 :: (a -> (#b, c#)) -> a -> (b -> c -> r) -> r Source # repDecompose2 :: (a -> (b -> c -> (#b, c#)) -> (#b, c#)) -> a -> (#b, c#) Source # | |
RepCompose2 IntRep IntRep LiftedRep Source # | |
Defined in Data.Tuple.Unboxed.Rep Methods repCompose2 :: (a -> (#b, c#)) -> a -> (b -> c -> r) -> r Source # repDecompose2 :: (a -> (b -> c -> (#b, c#)) -> (#b, c#)) -> a -> (#b, c#) Source # | |
RepCompose2 IntRep IntRep UnliftedRep Source # | |
Defined in Data.Tuple.Unboxed.Rep Methods repCompose2 :: (a -> (#b, c#)) -> a -> (b -> c -> r) -> r Source # repDecompose2 :: (a -> (b -> c -> (#b, c#)) -> (#b, c#)) -> a -> (#b, c#) Source # | |
RepCompose2 IntRep IntRep IntRep Source # | |
Defined in Data.Tuple.Unboxed.Rep Methods repCompose2 :: (a -> (#b, c#)) -> a -> (b -> c -> r) -> r Source # repDecompose2 :: (a -> (b -> c -> (#b, c#)) -> (#b, c#)) -> a -> (#b, c#) Source # | |
RepCompose2 WordRep IntRep UnliftedRep Source # | |
Defined in Data.Tuple.Unboxed.Rep Methods repCompose2 :: (a -> (#b, c#)) -> a -> (b -> c -> r) -> r Source # repDecompose2 :: (a -> (b -> c -> (#b, c#)) -> (#b, c#)) -> a -> (#b, c#) Source # | |
RepCompose2 WordRep WordRep IntRep Source # | |
Defined in Data.Tuple.Unboxed.Rep Methods repCompose2 :: (a -> (#b, c#)) -> a -> (b -> c -> r) -> r Source # repDecompose2 :: (a -> (b -> c -> (#b, c#)) -> (#b, c#)) -> a -> (#b, c#) Source # | |
RepCompose2 WordRep WordRep WordRep Source # | |
Defined in Data.Tuple.Unboxed.Rep Methods repCompose2 :: (a -> (#b, c#)) -> a -> (b -> c -> r) -> r Source # repDecompose2 :: (a -> (b -> c -> (#b, c#)) -> (#b, c#)) -> a -> (#b, c#) Source # | |
RepCompose2 AddrRep IntRep UnliftedRep Source # | |
Defined in Data.Tuple.Unboxed.Rep Methods repCompose2 :: (a -> (#b, c#)) -> a -> (b -> c -> r) -> r Source # repDecompose2 :: (a -> (b -> c -> (#b, c#)) -> (#b, c#)) -> a -> (#b, c#) Source # | |
RepCompose2 FloatRep IntRep IntRep Source # | |
Defined in Data.Tuple.Unboxed.Rep Methods repCompose2 :: (a -> (#b, c#)) -> a -> (b -> c -> r) -> r Source # repDecompose2 :: (a -> (b -> c -> (#b, c#)) -> (#b, c#)) -> a -> (#b, c#) Source # | |
RepCompose2 DoubleRep IntRep IntRep Source # | |
Defined in Data.Tuple.Unboxed.Rep Methods repCompose2 :: (a -> (#b, c#)) -> a -> (b -> c -> r) -> r Source # repDecompose2 :: (a -> (b -> c -> (#b, c#)) -> (#b, c#)) -> a -> (#b, c#) Source # |
class RepCompose3 (r0 :: RuntimeRep) (r1 :: RuntimeRep) (r2 :: RuntimeRep) (r3 :: RuntimeRep) where Source #
Methods
repCompose3 :: forall (a :: TYPE r0) (b :: TYPE r1) (c :: TYPE r2) (d :: TYPE r3) (r :: *). (a -> (#b, c, d#)) -> a -> (b -> c -> d -> r) -> r Source #
repDecompose3 :: forall (a :: TYPE r0) (b :: TYPE r1) (c :: TYPE r2) (d :: TYPE r3) (r :: *). (a -> (b -> c -> d -> (#b, c, d#)) -> (#b, c, d#)) -> a -> (#b, c, d#) Source #
Instances
RepCompose3 LiftedRep AddrRep UnliftedRep UnliftedRep Source # | |
Defined in Data.Tuple.Unboxed.Rep Methods repCompose3 :: (a -> (#b, c, d#)) -> a -> (b -> c -> d -> r) -> r Source # repDecompose3 :: (a -> (b -> c -> d -> (#b, c, d#)) -> (#b, c, d#)) -> a -> (#b, c, d#) Source # | |
RepCompose3 IntRep IntRep IntRep IntRep Source # | |
Defined in Data.Tuple.Unboxed.Rep Methods repCompose3 :: (a -> (#b, c, d#)) -> a -> (b -> c -> d -> r) -> r Source # repDecompose3 :: (a -> (b -> c -> d -> (#b, c, d#)) -> (#b, c, d#)) -> a -> (#b, c, d#) Source # | |
RepCompose3 FloatRep IntRep IntRep UnliftedRep Source # | |
Defined in Data.Tuple.Unboxed.Rep Methods repCompose3 :: (a -> (#b, c, d#)) -> a -> (b -> c -> d -> r) -> r Source # repDecompose3 :: (a -> (b -> c -> d -> (#b, c, d#)) -> (#b, c, d#)) -> a -> (#b, c, d#) Source # | |
RepCompose3 DoubleRep IntRep IntRep UnliftedRep Source # | |
Defined in Data.Tuple.Unboxed.Rep Methods repCompose3 :: (a -> (#b, c, d#)) -> a -> (b -> c -> d -> r) -> r Source # repDecompose3 :: (a -> (b -> c -> d -> (#b, c, d#)) -> (#b, c, d#)) -> a -> (#b, c, d#) Source # | |
RepCompose3 DoubleRep IntRep IntRep IntRep Source # | |
Defined in Data.Tuple.Unboxed.Rep Methods repCompose3 :: (a -> (#b, c, d#)) -> a -> (b -> c -> d -> r) -> r Source # repDecompose3 :: (a -> (b -> c -> d -> (#b, c, d#)) -> (#b, c, d#)) -> a -> (#b, c, d#) Source # |
class RepCompose4 (r0 :: RuntimeRep) (r1 :: RuntimeRep) (r2 :: RuntimeRep) (r3 :: RuntimeRep) (r4 :: RuntimeRep) where Source #
Methods
repCompose4 :: forall (a :: TYPE r0) (b :: TYPE r1) (c :: TYPE r2) (d :: TYPE r3) (e :: TYPE r4) (r :: *). (a -> (#b, c, d, e#)) -> a -> (b -> c -> d -> e -> r) -> r Source #
repDecompose4 :: forall (a :: TYPE r0) (b :: TYPE r1) (c :: TYPE r2) (d :: TYPE r3) (e :: TYPE r4) (r :: *). (a -> (b -> c -> d -> e -> (#b, c, d, e#)) -> (#b, c, d, e#)) -> a -> (#b, c, d, e#) Source #
Instances
RepCompose4 UnliftedRep IntRep UnliftedRep IntRep UnliftedRep Source # | |
Defined in Data.Tuple.Unboxed.Rep Methods repCompose4 :: (a -> (#b, c, d, e#)) -> a -> (b -> c -> d -> e -> r) -> r Source # repDecompose4 :: (a -> (b -> c -> d -> e -> (#b, c, d, e#)) -> (#b, c, d, e#)) -> a -> (#b, c, d, e#) Source # | |
RepCompose4 DoubleRep IntRep WordRep WordRep IntRep Source # | |
Defined in Data.Tuple.Unboxed.Rep Methods repCompose4 :: (a -> (#b, c, d, e#)) -> a -> (b -> c -> d -> e -> r) -> r Source # repDecompose4 :: (a -> (b -> c -> d -> e -> (#b, c, d, e#)) -> (#b, c, d, e#)) -> a -> (#b, c, d, e#) Source # |