box-tuples-0.2.0.2: A hack to use GHC.Prim primitives in GHCi

Copyright(C) 2020 mniip
LicenseMIT
Maintainermniip <mniip@mniip.com>
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 #