我有一些任务要求我在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)