Copyright | (c) Juan García Garland 2018 |
---|---|
License | LGPL |
Maintainer | jpgarcia@fing.edu.uy |
Stability | experimental |
Portability | POSIX |
Safe Haskell | None |
Language | Haskell2010 |
Implementation of strongly typed heterogeneous lists.
Synopsis
- data HList (l :: [Type]) :: Type where
- class HMember (t :: Type) (l :: [Type]) where
- type HMemberRes t l :: Bool
- hMember :: Label t -> HList l -> Proxy (HMemberRes t l)
- class HMember' (t :: k) (l :: [k]) where
- type HMemberRes' t l :: Bool
- hMember' :: f t -> KList l -> Proxy (HMemberRes' t l)
- (.:) :: forall x (xs :: [Type]). x -> HList xs -> HList (x ': xs)
- ε :: HList ('[] :: [Type])
- data KList (l :: [k]) :: Type where
- (.:.) :: forall k (h :: k) (l :: [k]). Label h -> KList l -> KList (h ': l)
- eL :: KList ('[] :: [k])
Documentation
class HMember (t :: Type) (l :: [Type]) where Source #
HMember is a test membership function. Since we are in Haskell the value level function computes with the evidence
type HMemberRes t l :: Bool Source #
Instances
HMember t ('[] :: [Type]) Source # | |
Defined in Language.Grammars.AspectAG.HList type HMemberRes t '[] :: Bool Source # | |
HMember t (t' ': ts) Source # | |
Defined in Language.Grammars.AspectAG.HList type HMemberRes t (t' ': ts) :: Bool Source # |
class HMember' (t :: k) (l :: [k]) where Source #
HMember' is a test membership function. But looking up in a list of Labels
type HMemberRes' t l :: Bool Source #
Instances
HMember' (t :: k) ('[] :: [k]) Source # | |
Defined in Language.Grammars.AspectAG.HList type HMemberRes' t '[] :: Bool Source # | |
HMember' (t :: k) (t' ': ts :: [k]) Source # | |
Defined in Language.Grammars.AspectAG.HList type HMemberRes' t (t' ': ts) :: Bool Source # |
(.:) :: forall x (xs :: [Type]). x -> HList xs -> HList (x ': xs) infixr 2 Source #
No other functionality is needed for AAG