小编Pau*_*ulM的帖子

在Common Lisp中从键盘读取Lambda表达式

我希望能够从键盘读取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))无法执行或应用

有没有一种简单的方法可以做到这一点,而我却错过了?

谢谢。

lambda input common-lisp

7
推荐指数
3
解决办法
71
查看次数

lisp中的强制功能-数组和列表

我看到不同版本的Common Lisp之间有不同的强制行为-想知道哪个是“正确的”或在这个看似简单的问题上是标准的模棱两可:

(coerce '(1 2 3) 'array) 
Run Code Online (Sandbox Code Playgroud)

正确的口吻?它在Clozure Common Lisp中工作正常,但在sbcl中却不能。

当不起作用时,将列表强制转换为数组的最简单方法是什么?

谢谢

lisp common-lisp coerce clozure-cl

1
推荐指数
1
解决办法
125
查看次数

标签 统计

common-lisp ×2

clozure-cl ×1

coerce ×1

input ×1

lambda ×1

lisp ×1