EVALdoes not have access to lexical variables. CLHS says:
Computes the form in the current dynamic environment and zero lexical environment.
If you declare a variable special, it will work because it performs dynamic binding, not lexical binding.
(let ((NF 5))
(declare (special NF))
(eval 'NF))
5
source
share