diff --git a/src/evalvars.c b/src/evalvars.c
index d8ee216..e83c50d 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -605,10 +605,11 @@
 /*
  * Evaluate one Vim expression {expr} in string "p" and append the
  * resulting string to "gap".  "p" points to the opening "{".
+ * When "evaluate" is FALSE only skip over the expression.
  * Return a pointer to the character after "}", NULL for an error.
  */
     char_u *
-eval_one_expr_in_str(char_u *p, garray_T *gap)
+eval_one_expr_in_str(char_u *p, garray_T *gap, int evaluate)
 {
     char_u	*block_start = skipwhite(p + 1);  // skip the opening {
     char_u	*block_end = block_start;
@@ -627,13 +628,16 @@
 	semsg(_(e_missing_close_curly_str), p);
 	return NULL;
     }
-    *block_end = NUL;
-    expr_val = eval_to_string(block_start, TRUE);
-    *block_end = '}';
-    if (expr_val == NULL)
-	return NULL;
-    ga_concat(gap, expr_val);
-    vim_free(expr_val);
+    if (evaluate)
+    {
+	*block_end = NUL;
+	expr_val = eval_to_string(block_start, TRUE);
+	*block_end = '}';
+	if (expr_val == NULL)
+	    return NULL;
+	ga_concat(gap, expr_val);
+	vim_free(expr_val);
+    }
 
     return block_end + 1;
 }
@@ -691,7 +695,7 @@
 	}
 
 	// Evaluate the expression and append the result.
-	p = eval_one_expr_in_str(p, &ga);
+	p = eval_one_expr_in_str(p, &ga, TRUE);
 	if (p == NULL)
 	{
 	    ga_clear(&ga);
diff --git a/src/proto/evalvars.pro b/src/proto/evalvars.pro
index ce79435..4683c15 100644
--- a/src/proto/evalvars.pro
+++ b/src/proto/evalvars.pro
@@ -13,7 +13,7 @@
 int get_spellword(list_T *list, char_u **pp);
 void prepare_vimvar(int idx, typval_T *save_tv);
 void restore_vimvar(int idx, typval_T *save_tv);
-char_u *eval_one_expr_in_str(char_u *p, garray_T *gap);
+char_u *eval_one_expr_in_str(char_u *p, garray_T *gap, int evaluate);
 char_u *eval_all_expr_in_str(char_u *str);
 list_T *heredoc_get(exarg_T *eap, char_u *cmd, int script_get, int vim9compile);
 void ex_var(exarg_T *eap);
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index 202bb58..bbe39d1 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -2156,6 +2156,13 @@
               ->split($'x{x}x')
               ->map((_, v: string) => v =~ 'bar')
   assert_equal([false, true, false], vl)
+
+  # interpolated string in a lambda
+  lines =<< trim END
+      assert_equal(['gnome-256color', 'xterm-256color'], ['gnome', 'xterm']
+              ->map((_, term: string) => $'{term}-256color'))
+  END
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr8_vimvar()
diff --git a/src/typval.c b/src/typval.c
index 09dc474..a266330 100644
--- a/src/typval.c
+++ b/src/typval.c
@@ -2363,7 +2363,7 @@
 	    ++*arg;
 	    break;
 	}
-	p = eval_one_expr_in_str(*arg, &ga);
+	p = eval_one_expr_in_str(*arg, &ga, evaluate);
 	if (p == NULL)
 	{
 	    ret = FAIL;
diff --git a/src/version.c b/src/version.c
index cffc703..80f631b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4934,
+/**/
     4933,
 /**/
     4932,
