type-level-kv-list 2.0.0 → 2.0.1.0
raw patch · 2 files changed
+26/−2 lines, 2 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ Data.KVList: (&=>) :: (Applicative f, KnownSymbol k, Appended kvs '[k := v] ~ appended) => f (KVList kvs) -> (k := f v) -> f (KVList appended)
- Data.KVList: infixl 1 &=
+ Data.KVList: infixl 1 &=>
Files
- src/Data/KVList.hs +24/−0
- type-level-kv-list.cabal +2/−2
src/Data/KVList.hs view
@@ -5,6 +5,7 @@ {-# LANGUAGE TypeOperators #-} {-# LANGUAGE CPP #-} {-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE ApplicativeDo #-} module Data.KVList (@@ -13,6 +14,7 @@ KVList , (:=)((:=)) , (&=)+ , (&=>) , kvcons , empty , singleton@@ -56,11 +58,33 @@ empty :: KVList '[] empty = KVNil +{-| -} (&=) :: (KnownSymbol k, Appended kvs '[k := v] ~ appended) => KVList kvs -> (k := v) -> KVList appended (&=) kvs kv = append kvs (singleton kv) {-# INLINE (&=) #-} infixl 1 &=++{-| Applicative version of '(&=)'.+ -+ - >>> pure KVList.empty+ - >>> &=> #foo := (Just 3)+ - >>> &=> #bar := (Just "bar")+ - Just $ KVList.empty &= #foo := 3 &= #bar := "bar"+ -+ - >>> pure KVList.empty+ - >>> &=> #foo := (Just 3)+ - >>> &=> #bar := Nothing+ - Nothing+-}+(&=>) :: (Applicative f, KnownSymbol k, Appended kvs '[k := v] ~ appended) => f (KVList kvs) -> (k := f v) -> f (KVList appended)+(&=>) fkvs (k := fv) = do+ kvs <- fkvs+ v <- fv+ pure $ (&=) kvs (k := v)+{-# INLINE (&=>) #-}++infixl 1 &=> {-| -} kvcons :: (KnownSymbol k) => (k := v) -> KVList kvs -> KVList ((k := v) ': kvs)
type-level-kv-list.cabal view
@@ -1,11 +1,11 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.34.4.+-- This file has been generated from package.yaml by hpack version 0.35.1. -- -- see: https://github.com/sol/hpack name: type-level-kv-list-version: 2.0.0+version: 2.0.1.0 synopsis: Type level Key-Value list. description: This library provides a brief implementation for extensible records. category: Data