列表中的 cLisp 错误EVAL:变量没有值

问题描述

我有一些任务要求我在 LISP 中创建一个列表,所以我在网上使用剪辑,我将此代码用于创建我的列表并执行一些操作

‭‬‬‬‬
‭(‬print‭ (‬setq y‭ '(‬2‭ ‬3‭ ‬4‭ ‬5‭ ‬6‭ ‬7‭ ‬8‭)))‬‬‬‬‬‬‬‬‬‬‬
‭(‬print‭  (‬setq y‭ (‬cons 1‭ ‬y‭)))‬‬‬‬‬‬
‭(‬print‭  (‬setq y‭ (‬append y‭ '(‬9‭))))‬‬‬‬‬‬
‭(‬print‭  (‬car y‭))‬‬‬‬
‭(‬print‭  (‬second y‭))‬‬‬‬
‭(‬print‭  (‬third y‭))‬‬‬‬
‭(‬print‭  (‬fourth y‭))‬‬‬‬
‭(‬print‭  (‬fifth y‭))‬‬‬‬
‭(‬print‭  (‬last y‭))‬‬‬‬
‭(‬print‭ (‬second‭ (‬reverse y‭)))‬‬‬‬‬
‭(‬print‭  (‬setq y‭ (‬reverse y‭)))‬‬‬‬‬
‭(‬print‭  (‬setq y‭ (‬cdr y‭)))‬‬‬‬‬
‭(‬print‭  (‬setq y‭ (‬reverse‭ (‬cdr‭ (‬reverse y‭)))))‬‬‬‬‬‬‬
‭(‬print‭  (‬length y‭))‬‬‬‬
‭(‬print‭  (‬member 9‭ ‬y‭))‬‬‬‬‬

并且此错误出现时没有任何其他输出

*** - EVAL: variable ‭‬‬‬‬ has no value

你能帮我理解什么是错的,该怎么做吗? 谢谢

解决方法

你应该问问自己为什么你的代码包含非打印字符。请再次尝试使用没有隐藏字符的程序。

> (length "‭(‬print‭ (‬setq y‭ '(‬2‭ ‬3‭ ‬4‭ ‬5‭ ‬6‭ ‬7‭ ‬8‭)))‬‬‬‬‬‬‬‬‬‬‬")
63

没有隐藏字符:

> (length "(print (setq y '(2 3 4 5 6 7 8)))")
33

正如 Bruno Haible 提到的,我们可以更清楚地看到:

[1]> (coerce "(‬print‭ (‬setq y‭ '(‬2‭ ‬3‭ ‬4‭ ‬5‭ ‬6‭ ‬7‭ ‬8‭)))‬‬‬‬‬‬‬‬‬‬‬" 'list)
(#\( #\POP_DIRECTIONAL_FORMATTING #\p #\r #\i #\n #\t #\LEFT-TO-RIGHT_OVERRIDE #\Space #\( #\POP_DIRECTIONAL_FORMATTING #\s #\e #\t #\q #\Space #\y #\LEFT-TO-RIGHT_OVERRIDE #\Space #\' #\( #\POP_DIRECTIONAL_FORMATTING #\2
 #\LEFT-TO-RIGHT_OVERRIDE #\Space #\POP_DIRECTIONAL_FORMATTING #\3 #\LEFT-TO-RIGHT_OVERRIDE #\Space #\POP_DIRECTIONAL_FORMATTING #\4 #\LEFT-TO-RIGHT_OVERRIDE #\Space #\POP_DIRECTIONAL_FORMATTING #\5 #\LEFT-TO-RIGHT_OVERRIDE
 #\Space #\POP_DIRECTIONAL_FORMATTING #\6 #\LEFT-TO-RIGHT_OVERRIDE #\Space #\POP_DIRECTIONAL_FORMATTING #\7 #\LEFT-TO-RIGHT_OVERRIDE #\Space #\POP_DIRECTIONAL_FORMATTING #\8 #\LEFT-TO-RIGHT_OVERRIDE #\) #\) #\)
 #\POP_DIRECTIONAL_FORMATTING #\POP_DIRECTIONAL_FORMATTING #\POP_DIRECTIONAL_FORMATTING #\POP_DIRECTIONAL_FORMATTING #\POP_DIRECTIONAL_FORMATTING #\POP_DIRECTIONAL_FORMATTING #\POP_DIRECTIONAL_FORMATTING
 #\POP_DIRECTIONAL_FORMATTING #\POP_DIRECTIONAL_FORMATTING #\POP_DIRECTIONAL_FORMATTING #\POP_DIRECTIONAL_FORMATTING)