Copyright | Alexander Krupenkin 2017-2018 |
---|---|
License | BSD3 |
Maintainer | mail@akru.me |
Stability | experimental |
Portability | unportable |
Safe Haskell | None |
Language | Haskell2010 |
This module is internal, the purpose is to define helper classes and types to assist in event decoding. The user of this library should have no need to use this directly in application code.
Synopsis
- data HList :: [Type] -> Type where
- class HListRep a xs | a -> xs, a -> xs where
- class Sort (xs :: [Type]) where
- class Insert (x :: Type) (xs :: [Type]) where
- class InsertCmp (b :: Ordering) (x :: Type) (y :: Type) (ys :: [Type]) where
- type InsertCmp' b x y ys :: [Type]
- insertCmp :: Proxy (b :: Ordering) -> x -> y -> HList ys -> HList (InsertCmp' b x y ys)
- class UnTag t where
- class HListMerge (as :: [Type]) (bs :: [Type]) where
- class HListMergeSort as bs where
- type MergeSort' as bs :: [Type]
- mergeSortHList :: HList as -> HList bs -> HList (MergeSort' as bs)
- class MergeIndexedArguments as bs where
- type MergeIndexedArguments' as bs :: [Type]
- mergeIndexedArguments :: HList as -> HList bs -> HList (MergeIndexedArguments' as bs)
Documentation
class HListRep a xs | a -> xs, a -> xs where Source #
Generic representation to HList representation
class Sort (xs :: [Type]) where Source #
Sort a Tagged HList
class InsertCmp (b :: Ordering) (x :: Type) (y :: Type) (ys :: [Type]) where Source #
type InsertCmp' b x y ys :: [Type] Source #
Unwrap all the Tagged items in an HList
class HListMerge (as :: [Type]) (bs :: [Type]) where Source #
Instances
HListMerge ([] :: [Type]) bs Source # | |
HListMerge as bs => HListMerge (a ': as) bs Source # | |
class HListMergeSort as bs where Source #
type MergeSort' as bs :: [Type] Source #
mergeSortHList :: HList as -> HList bs -> HList (MergeSort' as bs) Source #
Instances
(HListMerge as bs, Concat as bs ~ cs, Sort cs, Sort' cs ~ cs') => HListMergeSort as bs Source # | |
Defined in Data.Solidity.Event.Internal type MergeSort' as bs :: [Type] Source # mergeSortHList :: HList as -> HList bs -> HList (MergeSort' as bs) Source # |
class MergeIndexedArguments as bs where Source #
type MergeIndexedArguments' as bs :: [Type] Source #
mergeIndexedArguments :: HList as -> HList bs -> HList (MergeIndexedArguments' as bs) Source #
Instances
(HListMergeSort as bs, MergeSort' as bs ~ cs, UnTag cs, UnTag cs' ~ ds) => MergeIndexedArguments as bs Source # | |
Defined in Data.Solidity.Event.Internal type MergeIndexedArguments' as bs :: [Type] Source # mergeIndexedArguments :: HList as -> HList bs -> HList (MergeIndexedArguments' as bs) Source # |