【问题标题】:#<PACKAGE COMMON-LISP> is locked [duplicate]#<PACKAGE COMMON-LISP> 已锁定 [重复]
【发布时间】:2015-07-10 13:24:16
【问题描述】:

我正在学习 Lisp 编程语言。我写了一个简单的程序:

(defun abs(x)
  (cond ((> x 0) x)
        ((= x 0) 0)
        ((< x 0) (- x))))

(print (abs 5))

当我编译并运行此代码时,我收到以下警告:

WARNING: DEFUN/DEFMACRO(ABS): #<PACKAGE COMMON-LISP> is locked
         Ignore the lock and proceed
WARNING: DEFUN/DEFMACRO: redefining function ABS in /home/lisp/file.lisp, was defined in C

我不明白为什么会给出这个警告,这是什么意思? 谁能解释一下?

【问题讨论】:

  • 除了 FrédéricHamidi 的评论,请注意 Common Lisp 中已经定义了一个 abs 函数。你不能重新定义它。要么使用不同的包,要么使用不同的名称(例如,my-abs)。

标签: lisp common-lisp clisp


【解决方案1】:

您正在尝试重新定义 ANSI Common Lisp 函数 abs 并且系统正在警告您。

请看"package locking" 在手册中。

(你现在欠我1 zorkmid)。

【讨论】:

    猜你喜欢
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 2017-02-03
    • 2011-12-24
    • 1970-01-01
    相关资源
    最近更新 更多