diff --git a/library/THLego/Lambdas.hs b/library/THLego/Lambdas.hs
--- a/library/THLego/Lambdas.hs
+++ b/library/THLego/Lambdas.hs
@@ -8,6 +8,56 @@
 
 
 {-|
+Van Larrhoven lens.
+-}
+vlLens ::
+  {-| Constructor name. -}
+  Name ->
+  {-| Total amount of members. -}
+  Int ->
+  {-| Index of the member. -}
+  Int ->
+  {-|
+  Lambda expression of the following type:
+  
+  > forall f. Functor f => (a -> f b) -> s -> f t
+  -}
+  Exp
+vlLens conName numMembers index =
+  LamE [onMemberP, productP] exp
+  where
+    -- Reference implementation:
+    -- \ memberMapper (Product a b) -> fmap (\ newMember -> Product newMember b) (memberMapper a)
+    onMemberName =
+      mkName "memberMapper"
+    memberNames =
+      fmap alphabeticIndexName (enumFromTo 0 (pred numMembers))
+    onMemberP =
+      VarP onMemberName
+    productP =
+      ConP conName pats
+      where
+        pats =
+          fmap VarP memberNames
+    exp =
+      multiAppE (VarE 'fmap) [setterE, onMemberE]
+      where
+        setterE =
+          LamE [VarP valueName] exp
+          where
+            valueName =
+              mkName "newMember"
+            exp =
+              multiAppE (ConE conName) (fmap VarE argNames)
+              where
+                argNames =
+                  take index memberNames <>
+                  [valueName] <>
+                  drop (succ index) memberNames
+        onMemberE =
+          AppE (VarE onMemberName) (VarE (alphabeticIndexName index))
+
+{-|
 Simulates lambda-case without the need for extension.
 -}
 matcher :: [Match] -> Exp
diff --git a/th-lego.cabal b/th-lego.cabal
--- a/th-lego.cabal
+++ b/th-lego.cabal
@@ -1,5 +1,5 @@
 name: th-lego
-version: 0.2.0.1
+version: 0.2.1
 synopsis: Template Haskell construction utilities
 description:
   A collection of templates for the typical patterns appearing
