In an anonymous function such as
(lambda () x)
how can I replace the symbol x with its value in the current scope?
The only thing I can think of is
(eval `(lambda () ,x))
but I wonder if there's another way.
Remove the eval. Just `(lambda () ,x).
That returns the list (lambda () VAL-X), where VAL-X is the value of variable x. And a lambda list is interpreted by Emacs as a function.