Common Lisp는 주어진 결과를 얻기위한 다양한 유연한 코딩 옵션을 제공합니다. 그러나 때로는 최선의 방법을 선택하기가 어렵습니다. 예를 들어, 다음 벡터 식은 모두 다른 방식으로 동일한 결과를 생성합니다. (defparameter objects (list 1 2 3))
(apply #'vector objects)
(coerce objects
제 질문은 오히려 간단합니다. 나는 다음과 같은 명령을 실행할 때 커먼 리스프에서 는, 나는 해당 결과를 얻을 : (eval '''boo) => 'boo
반면에, 나는 약간 다른 무언가를 얻을 다음 명령을 실행합니다. (eval (eval '''boo)) => boo
내 질문은 이것이다 : 첫 번째 명령의 eval 변수 심볼 두 따옴표 "오프 면도"
임의의 배열의 다양한 속성에 액세스하는 데 사용되는 Common Lisp 함수가 많이 있습니다 (예 : array-dimensions). 그러나 배열 내용의 복사본을 반환하는 함수 (:initial-contents을 입력하는 데 사용 된 것과 동일한 형식으로 make-array)는 제공되지 않습니다. Loop ... collect은 유용하게 보일 수 있지만
정수 계산을 수행하고 내가 사용하는 값의 type에 대한 명시적인 정보를 제공하면 SBCL이 더 많은 속도를 낼 수 있는지 확인하고 싶습니다. 을 defun 또는 let에 직접 사용할 수는 있지만 loop 구문 내에서 구문을 어디에 넣어야하는지 이해할 수 없습니다. iterate 패키지의 설명서를 보았지만 그러한 가능성은 있지만 루프를 고수하고 싶었습니다.
In Practical Common Lisp Ch. 9, Peter Seibel은 S- 표현 평가의 실제 결과와 기대치를 비교하기위한 기본 단위 테스트 벤치를 제공합니다. 예를 들어 테스트를 (deftest plus-test() (check (= (+ 1 2) 3)))으로 정의하고 (더하기 테스트)를 평가하면 결과는 pass ... (PLUS-TEST):
"defun"과 "lambda"등과 같이 많이 사용되는 명령에 대해 공통 리스프 (별칭은 clisp)로 별칭을 설정하고 싶습니다. 이 실제로이 question의 종류의 중복,하지만 난 언급 할 수와 솔루션이 모두 SBCL에 defun는 또는 람다 작동 및 CLISP하지 않습니다
Ch 8 끝 부분 인 Practical Common Lisp에서 Peter Seibel은 once-only 매크로를 제공합니다. 이 기능의 목적은 사용자 정의 매크로에서 다양한 평가를 통해 여러 가지 미묘한 문제를 완화하는 것입니다. (defmacro once-only ((&rest names) &body body)
(let ((gensyms (l