Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
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.
a :. b infixr 8 |
Type level empty list.
Operators
get :: HasKey list pkey (Lookup pkey list) => pkey -> list -> Lookup pkey list Source #
>>>
get (Proxy :: Proxy "foo") sampleList
"str"
>>>
get (Proxy :: Proxy "bar") sampleList
34
>>>
get (Proxy :: Proxy "baz") sampleList
Null
keys :: NamedList layout => Proxy layout -> [String] Source #
>>>
keys (Proxy :: Proxy SampleList)
["foo","bar"]