gpt4 book ai didi

lisp - lambda 可以有文档字符串吗?

转载 作者:太空宇宙 更新时间:2023-11-03 18:44:56 25 4
gpt4 key购买 nike

我知道 def* 可以有文档字符串,所以我试了一下 lambda。

令人尴尬的是,以下返回 NIL。

(documentation (lambda () "a function which always returns nil" nil) 'function)

怎么了? lambda 不能有文档字符串吗?有办法吗?

最佳答案

根据 HyperSpec 部分 Symbol LAMBDA ,语法为:

lambda lambda-list [[declaration* | documentation]] form*

因此明确允许使用文档字符串。 Standard Generic Function DOCUMENTATION, (SETF DOCUMENTATION)列出了两个标准方法签名:

documentation (x function) (doc-type (eql 't))
documentation (x function) (doc-type (eql 'function))

这与您尝试调用它的方式相匹配。

但是,函数描述包括以下警告:

Documentation strings are made available for debugging purposes. Conforming programs are permitted to use documentation strings when they are present, but should not depend for their correct behavior on the presence of those documentation strings. An implementation is permitted to discard documentation strings at any time for implementation-defined reasons.

因此,虽然在您的案例中未保存文档字符串在技术上不是错误,但这是一个糟糕的实现。

关于lisp - lambda 可以有文档字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16756157/

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