我希望能够从键盘读取lambda表达式。例如,如果功能方块已经被拒绝,我可以输入符号名称:
(defun square (x) (* x x))
Run Code Online (Sandbox Code Playgroud)
以便在评估以下内容时:
(funcall (read) 2)
Run Code Online (Sandbox Code Playgroud)
用户可以输入square,结果为4。但是如果用户输入
(lambda (x) (* x x))
Run Code Online (Sandbox Code Playgroud)
结果是一个错误,例如在Macintosh Common Lisp中,
错误:(LAMBDA(X)(* XX))无法执行或应用
有没有一种简单的方法可以做到这一点,而我却错过了?
谢谢。
我看到不同版本的Common Lisp之间有不同的强制行为-想知道哪个是“正确的”或在这个看似简单的问题上是标准的模棱两可:
是
(coerce '(1 2 3) 'array)
Run Code Online (Sandbox Code Playgroud)
正确的口吻?它在Clozure Common Lisp中工作正常,但在sbcl中却不能。
当不起作用时,将列表强制转换为数组的最简单方法是什么?
谢谢