gpt4 book ai didi

common-lisp - sbcl 上的 undefined variable ,而不是 clisp 上的 undefined variable

转载 作者:行者123 更新时间:2023-12-05 08:21:16 28 4
gpt4 key购买 nike

clisp 上加载以下 2 个函数成功。

(defun func1 (l)
(defvar *count* nil)
(setq count 1)
(cond ((null l) 0)
((atom l) (+ count 1))
((atom (car l)) (+ count (func1 (cdr l))))
((listp (car l)) (+ (func1 (car l)) (func1 (cdr l))))
(t nil)) )
(defun func2 (l)
(defvar *resLis* nil)
(setq resLis '((0 0)))
(anotherFunc l resLis)
)

但是,sbcl 导致错误:

warning: undefined variable: COUNT
warning: undefined variable: RESLIS
Compilation failed.

我更喜欢使用 sbcl(因为我的 slime 只适合它)但是上面的代码有什么问题吗?

环境:Ubuntu 11.10、GNU CLISP 2.49、SBCL 1.0.50.0.debian

最佳答案

SBCL 不会“导致错误”。编译器打印一条警告。如果您使用它的解释器而不是它的编译器,CLISP 可能不会发出警告。 SBCL 默认使用编译器。

怎么了?

  • DEFVAR 是定义全局变量的顶级形式。可以在函数中使用它,但不推荐。

  • count 只是未定义。正如 SBCL 所说。您没有定义变量 count

关于common-lisp - sbcl 上的 undefined variable ,而不是 clisp 上的 undefined variable ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9746933/

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