| 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 # | |