diff --git a/src/Data/KVList.hs b/src/Data/KVList.hs
--- a/src/Data/KVList.hs
+++ b/src/Data/KVList.hs
@@ -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)
diff --git a/type-level-kv-list.cabal b/type-level-kv-list.cabal
--- a/type-level-kv-list.cabal
+++ b/type-level-kv-list.cabal
@@ -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
