나는 def*
에 docstrings이있을 수 있다는 것을 알고 있으므로 lambdas를 시험해 봅니다.람다는 문서화 문자열을 가질 수 있습니까?
다음과 같이 NIL을 반환합니다.
(documentation (lambda() "a function which always returns nil" nil) 'function)
무엇이 잘못 되었습니까? 람다는 문서화 문자열을 가질 수 없습니까? 그것을 할 수있는 방법이 있습니까?
나는 def*
에 docstrings이있을 수 있다는 것을 알고 있으므로 lambdas를 시험해 봅니다.람다는 문서화 문자열을 가질 수 있습니까?
다음과 같이 NIL을 반환합니다.
(documentation (lambda() "a function which always returns nil" nil) 'function)
무엇이 잘못 되었습니까? 람다는 문서화 문자열을 가질 수 없습니까? 그것을 할 수있는 방법이 있습니까?
HyperSpec을 섹션 Symbol LAMBDA에 따르면, 구문은 다음과 같습니다
lambda lambda-list [[declaration* | documentation]] form*
이 때문에 문서-string은 명확하게 허용됩니다.
Standard Generic Function DOCUMENTATION, (SETF DOCUMENTATION) 목록과 같은 표준 방법 서명 두 가지 : 당신이 전화를 시도하는 방식과 일치
documentation (x function) (doc-type (eql 't))
documentation (x function) (doc-type (eql 'function))
.
그러나 기능 설명 다음 경고를 포함
문서 문자열 디버깅을 위해 제공된다. 적합성 프로그램은 문서 문자열이있을 때이를 사용할 수 있지만 해당 문서 문자열이있는 경우 올바른 동작에 의존하지 않아야합니다. 구현은 구현 정의 된 이유 때문에 언제든지 설명서 문자열을 삭제할 수 있습니다.
기술적으로 문서 문자열이 사례에 저장되지 않는 버그는 아니지만 구현이 잘못되었습니다.
Barmar가 말했듯이 이것은 가능하지만 선택 사항입니다.
CLISP 및 SBCL은 익명의 람다 함수에 대한 문서화 문자열을 지원합니다.
CCL, ECL 및 LispWorks는 그렇지 않습니다.
람다는 문서화 문자열을 가질 수 있습니다 ... –
그런 다음 어떻게 가져 옵니까? –
그게 당신을 위해 nil을 돌려주는 이유를 모르겠다면, cslisp에서 나를 위해 항상 "nil을 반환하는 함수"라는 문자열을 반환합니다. –