공통 lisp에서 함수 객체 (또는 함수 심볼)가 주어진 경우 함수의 인수 목록을 찾을 수 있습니까?Common Lisp에서 함수 인수 목록 결정
9
A
답변
12
이 (철 이맥스 '미니 버퍼에 arglists을 표시 할 수있는 점액을 제공합니다) 각 CL 구현하지만 허풍 패키지에 대한 다른 하나의 기능이를 래핑 :
이* (defun testfn (arg1 arg2 &key (arg3 :a)) (declare (ignore arg1 arg2 arg3)))
TESTFN
* (swank-backend:arglist #'testfn)
(ARG1 ARG2 &KEY (ARG3 :A))
이것은 또한 작동합니다 메소드 : 허풍을 얻을
* (defmethod testmethod ((arg1 t) arg2 &key (arg3 :a)) (declare (ignore arg1 arg2 arg3)))
STYLE-WARNING: Implicitly creating new generic function TESTMETHOD.
#<STANDARD-METHOD TESTMETHOD (T T) {1005670231}>
* (swank-backend:arglist #'testmethod)
(ARG1 ARG2 &KEY (ARG3 :A))
가장 쉬운 방법은 Quicklisp을 사용하는 것입니다.
6
나는 표준 방법을 알고하지 않습니다하지만 SBCL에 당신은 sb-introspect:function-lambda-list
를 사용할 수 있습니다.
(defun test (a &rest rest &key (b 42)) nil)
(sb-introspect:function-lambda-list #'test)
=> (A &REST REST &KEY (B 42))
5
ANSI Common Lisp는 구현이 지원하고 표현식이 기록 된 경우 람다 식을 반환 할 수있는 FUNCTION-LAMBDA-EXPRESSION 함수를 제공합니다. 람다 표현식에서 두 번째 항목은 인수 목록입니다 - 평소와 같이.
그렇지 않으면 인수 목록이 ANSI CL 표준에 정의 된 특정 리스프 구현의 일부입니다하지 않습니다 돌아갑니다. 예를 들어 일부 '전달 된'Lisp 응용 프로그램에서는이 정보가 없을 수 있습니다.일반적으로 대부분의 CL의 구현은 일부 내부 패키지에 내 보낸 함수 아글리스트를해야합니다.
관련 문제
- 1. Common Lisp에서 라이브러리를로드하려면 어떻게해야합니까?
- 2. Common Lisp에서 타입 삭제하기
- 3. Common Lisp에서 lambda의 이름 바꾸기
- 4. | 5E | Common Lisp에서 의미가 있습니까?
- 5. Common Lisp에서 독자 매크로 관리
- 6. Mandelbrot Common Lisp에서 구현 설정
- 7. Common Lisp에서 퀴즈를 생성 하시겠습니까?
- 8. Common Lisp에서 HTML 테이블 스크랩하기?
- 9. 함수 포인터의 인수 목록
- 10. 이 코드를 common lisp에서 clojure로 번역하는 방법
- 11. Common Lisp에서 날짜를 구문 분석하는 패키지?
- 12. Common Lisp에서 구조체의 생성자를 순차적으로 평가하도록하려면 어떻게해야합니까?
- 13. common-lisp에서 목록에 요소를 삽입하려면 어떻게해야합니까?
- 14. 만들기의 ... 함수 인수 밖으로 목록
- 15. Common Lisp에서 실행중인 함수를 바꾸는 방법은 무엇입니까?
- 16. Common Lisp에서 XPath를 사용하여 'input'태그 찾기
- 17. 형식은 Common Lisp에서 언제 실제로 인쇄됩니까?
- 18. Common Lisp에서 인터프리터를 정지하라는 명령이 있습니까?
- 19. Common Lisp에서 큰 따옴표를 이스케이프 처리합니다.
- 20. Common Lisp에서 어떤 정규 표현식 라이브러리를 사용해야합니까?
- 21. Common Lisp의 함수 지속성
- 22. 추상 함수 및 가변 인수 목록
- 23. 함수 인수
- 24. Practical Common LISP에서 첫 번째 연습 문제 해결
- 25. Common Lisp에서 C++ (C가 아님)을 호출 하시겠습니까?
- 26. Common Lisp에서 왜 매크로는 gensym을 사용하지만 AND는 사용하지 않습니까?
- 27. Common Lisp에서 사용하기에 가장 적합한 SQL 라이브러리는 무엇입니까?
- 28. Common Lisp에서 불리언 값 목록을 어떻게 줄일 수 있습니까?
- 29. Common Lisp에서 이진 스트림 (파일 아님)을 만드는 방법은 무엇입니까?
- 30. Common Lisp에서 전체 텍스트 검색을위한 역 색인을 만드는 방법은 무엇입니까?
호환성 레이어로 사용 하시겠습니까? 재미있는 – sabof