| Safe Haskell | Safe |
|---|---|
| Language | Haskell2010 |
Data.TypeLevelKVList
Contents
Description
This module supply a way to construct type safe key-value pair list and convenient operations for the type.
- type NamedVal v key = (Proxy key, v)
- namedVal :: v -> NamedVal v k
- data a :. b = a :. b
- data Null = Null
- get :: HasKey list pkey (Lookup pkey list) => pkey -> list -> Lookup pkey list
- type family Lookup pkey list where ...
- keys :: NamedList layout => Proxy layout -> [String]
- keys' :: NamedList k => k -> [String]
- class NamedList layout where
Constructors
We can create type level KV list as follows.
>>>:set -XDataKinds -XTypeOperators>>>let sampleList = (namedVal "str" :: NamedVal String "foo") :. (namedVal 34 :: NamedVal Int "bar") :. Null>>>type SampleList = NamedVal String "foo" :. NamedVal Int "bar" :. Null
Type level list cons.
Constructors
| a :. b infixr 8 |
Type level empty list.
Constructors
| Null |
Operators
get :: HasKey list pkey (Lookup pkey list) => pkey -> list -> Lookup pkey list Source #
>>>get (Proxy :: Proxy "foo") sampleList"str"
>>>get (Proxy :: Proxy "bar") sampleList34
>>>get (Proxy :: Proxy "baz") sampleListNull
keys :: NamedList layout => Proxy layout -> [String] Source #
>>>keys (Proxy :: Proxy SampleList)["foo","bar"]