gpt4 book ai didi

common-lisp - 在Scheme或STk中,一个函数会显示为过程或闭包,但为什么LISP会报错呢?

转载 作者:行者123 更新时间:2023-12-01 15:14:40 25 4
gpt4 key购买 nike

在 Ubuntu 上,如果我运行 MIT-Scheme,它将显示一个函数作为过程:

1 ]=> (define (sq x) (* x x))

;Value: sq

1 ]=> (sq 3)

;Value: 9

1 ]=> sq

;Value 11: #[compound-procedure 11 sq]

Berkeley 的 STk 将 sq 显示为闭包:

STk> (define (sq x) (* x x))
sq
STk> (sq 3)
9
STk> sq
#[closure arglist=(x) b73fab48]

为什么在 Lisp(Common Lisp clisp)中,当我做同样的事情时,它会给我一个错误,我如何将一个函数显示为一个值(第一类值/对象)?

[1]> (defun sq(x) (* x x))
SQ
[2]> (sq 3)
9
[3]> sq

*** - SYSTEM::READ-EVAL-PRINT: variable SQ has no value
The following restarts are available:
USE-VALUE :R1 Input a value to be used instead of SQ.
STORE-VALUE :R2 Input a new value for SQ.
ABORT :R3 Abort main loop

最佳答案

与 Scheme 不同,Common Lisp 为变量和函数名称保留了单独的命名空间。在 CL 中尝试 #'sq。还可以在谷歌上搜索“Lisp1 vs Lisp2”以获得关于该主题的无休止的废话。

关于common-lisp - 在Scheme或STk中,一个函数会显示为过程或闭包,但为什么LISP会报错呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34255133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com