【问题标题】:Why is this an error in in SBCL?为什么这是 SBCL 中的错误?
【发布时间】:2013-08-04 03:21:06
【问题描述】:

为什么这是 SBCL 中的错误?如何调用传递给函数的 lambda?

* (defun call-foo (foo) (foo))
; in: DEFUN CALL-FOO
;     (SB-INT:NAMED-LAMBDA CALL-FOO
;         (FOO)
;       (BLOCK CALL-FOO (FOO)))
;
; caught STYLE-WARNING:
;   The variable FOO is defined but never used.

; in: DEFUN CALL-FOO
;     (FOO)
;
; caught STYLE-WARNING:
;   undefined function: FOO
;
; compilation unit finished
;   Undefined function:
;     FOO
;   caught 2 STYLE-WARNING conditions

CALL-FOO

【问题讨论】:

    标签: lambda common-lisp sbcl


    【解决方案1】:

    这是对 Common Lisp 的介绍:http://www.cs.cmu.edu/~dst/LispBook/

    您可能还想了解FUNCALL

    【讨论】:

    • +1 感谢您提及funcall。这是否意味着funcall 不进行静态类型检查? (有什么方法可以在确保静态类型检查的同时调用 lambdas?)
    • @mehrdad:funcall 是一个函数。 “函数”不进行“静态类型检查”。编译器可能。但是你需要告诉编译器一些关于类型的事情。你确定要使用 Lisp 吗?
    • 好吧,让我认识 SBCL 的是 this answer,但它似乎不像我预期的那样工作。感谢您的信息。
    • @Mehrdad, SBCL,与任何Common Lisp 编译器一样,必须遵循Common Lisp standard,并且按照这个标准,当您将函数传递为争论。在寻找额外的编译器功能之前,例如类型推断(这在标准中不是强制性的,我相信也没有提到),您可以考虑先学习该语言。
    猜你喜欢
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    相关资源
    最近更新 更多