Copyright | (c) Grant Weyburne 2022 |
---|---|
License | BSD-3 |
Safe Haskell | None |
Language | Haskell2010 |
Synopsis
- pnat :: forall n. KnownNat n => Int
- type family FailUnless b err where ...
- type family Fst tp where ...
- type family Snd tp where ...
- type family Fsts rs where ...
- type family Snds rs where ...
- type family LengthT rs where ...
- type family NotEqTC a b where ...
- type family Cons1T a ys = result | result -> a ys where ...
- type family SnocT as b where ...
- type family InitT xs where ...
- type family LastT ns where ...
- type family ApplyConstraints1 xs x where ...
- type family ApplyConstraint c xs where ...
- type family ApplyConstraints cs xs where ...
- type family UnsnocT ns where ...
- type family FirstConsT a b = result | result -> a b where ...
- type family ToITupleT x = result | result -> x where ...
- type family FromITupleT x = result | result -> x where ...
- class ITupleC x where
- toITupleC :: x -> ToITupleT x
- fromITupleC :: ToITupleT x -> x
- type family xs ++ ys where ...
- type family x :=> y where ...
Documentation
type family FailUnless b err where ... Source #
fail with error message if "b" is 'False
FailUnless 'False err = TypeError ('Text "FailUnless: " :<>: err) | |
FailUnless 'True _ = () |
type family Cons1T a ys = result | result -> a ys where ... Source #
cons a type to a nonempty list at the type level
type family ApplyConstraints1 xs x where ... Source #
create a constraint from a type and list of constraints taking a type
ApplyConstraints1 '[] _ = () | |
ApplyConstraints1 (c ': cs) x = (c x, ApplyConstraints1 cs x) |
type family ApplyConstraint c xs where ... Source #
create a constraint from a list of types and a constraint that take a type
ApplyConstraint _ '[] = () | |
ApplyConstraint c (x ': xs) = (c x, ApplyConstraint c xs) |
type family ApplyConstraints cs xs where ... Source #
create a constraint from a list of types and list of constraints that take a type
ApplyConstraints '[] _ = () | |
ApplyConstraints (c ': cs) xs = (ApplyConstraint c xs, ApplyConstraints cs xs) |
type family FirstConsT a b = result | result -> a b where ... Source #
cons a type to the first element in a tuple
FirstConsT a '(as, c) = '(a ': as, c) |
type family ToITupleT x = result | result -> x where ... Source #
convert a flat tuple type to an inductive tuple
ToITupleT (One a1) = (a1, ()) | |
ToITupleT (a1, a2) = (a1, (a2, ())) | |
ToITupleT (a1, a2, a3) = (a1, (a2, (a3, ()))) | |
ToITupleT (a1, a2, a3, a4) = (a1, (a2, (a3, (a4, ())))) | |
ToITupleT (a1, a2, a3, a4, a5) = (a1, (a2, (a3, (a4, (a5, ()))))) | |
ToITupleT (a1, a2, a3, a4, a5, a6) = (a1, (a2, (a3, (a4, (a5, (a6, ())))))) | |
ToITupleT (a1, a2, a3, a4, a5, a6, a7) = (a1, (a2, (a3, (a4, (a5, (a6, (a7, ()))))))) | |
ToITupleT (a1, a2, a3, a4, a5, a6, a7, a8) = (a1, (a2, (a3, (a4, (a5, (a6, (a7, (a8, ())))))))) | |
ToITupleT (a1, a2, a3, a4, a5, a6, a7, a8, a9) = (a1, (a2, (a3, (a4, (a5, (a6, (a7, (a8, (a9, ()))))))))) | |
ToITupleT (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) = (a1, (a2, (a3, (a4, (a5, (a6, (a7, (a8, (a9, (a10, ())))))))))) |
type family FromITupleT x = result | result -> x where ... Source #
convert an inductive tuple to a flat tuple type
FromITupleT (a1, ()) = One a1 | |
FromITupleT (a1, (a2, ())) = (a1, a2) | |
FromITupleT (a1, (a2, (a3, ()))) = (a1, a2, a3) | |
FromITupleT (a1, (a2, (a3, (a4, ())))) = (a1, a2, a3, a4) | |
FromITupleT (a1, (a2, (a3, (a4, (a5, ()))))) = (a1, a2, a3, a4, a5) | |
FromITupleT (a1, (a2, (a3, (a4, (a5, (a6, ())))))) = (a1, a2, a3, a4, a5, a6) | |
FromITupleT (a1, (a2, (a3, (a4, (a5, (a6, (a7, ()))))))) = (a1, a2, a3, a4, a5, a6, a7) | |
FromITupleT (a1, (a2, (a3, (a4, (a5, (a6, (a7, (a8, ())))))))) = (a1, a2, a3, a4, a5, a6, a7, a8) | |
FromITupleT (a1, (a2, (a3, (a4, (a5, (a6, (a7, (a8, (a9, ()))))))))) = (a1, a2, a3, a4, a5, a6, a7, a8, a9) | |
FromITupleT (a1, (a2, (a3, (a4, (a5, (a6, (a7, (a8, (a9, (a10, ())))))))))) = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) |
class ITupleC x where Source #
conversions to and from an inductive tuple and a flat tuple
Instances
ITupleC (One a1) Source # | |
ITupleC (a1, a2) Source # | |
Defined in Primus.TypeLevel | |
ITupleC (a1, a2, a3) Source # | |
Defined in Primus.TypeLevel | |
ITupleC (a1, a2, a3, a4) Source # | |
Defined in Primus.TypeLevel | |
ITupleC (a1, a2, a3, a4, a5) Source # | |
Defined in Primus.TypeLevel | |
ITupleC (a1, a2, a3, a4, a5, a6) Source # | |
Defined in Primus.TypeLevel | |
ITupleC (a1, a2, a3, a4, a5, a6, a7) Source # | |
Defined in Primus.TypeLevel | |
ITupleC (a1, a2, a3, a4, a5, a6, a7, a8) Source # | |
Defined in Primus.TypeLevel | |
ITupleC (a1, a2, a3, a4, a5, a6, a7, a8, a9) Source # | |
Defined in Primus.TypeLevel | |
ITupleC (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) Source # | |
Defined in Primus.TypeLevel |