문제

이해 한 후 (인용), 나는 진술이 어떻게 실행 될 수 있는지 궁금합니다. 나의 첫 생각은

(defvar x '(+ 2 21))
`(,@x)

그러나 그것은 단지 평가됩니다 (+ 2 21), 또는 내용 x. 목록에 배치 된 코드를 어떻게 실행합니까?

도움이 되었습니까?

해결책

(eval '(+ 2 21))

다른 팁

@Christián Romo :

백티크 예 : eval and backtick을 사용하여 적용 할 수 있습니다. 인수를 양식으로 연결할 수 있기 때문입니다. 세상에서 가장 효율적인 일이 아니지만 :

(eval `(and ,@(loop for x from 1 upto 4 collect `(evenp ,x))))

동일합니다

(eval '(and (evenp 1) (evenp 2) (evenp 3) (evenp 4)))

또한 이것은 (훨씬 더 효율적인) 결과와 동일합니다.

(every 'evenp '(1 2 3 4))

호기심을 만족시키기를 바랍니다!

재미있는 LISP 튜토리얼을 살펴보십시오 http://lisperati.com/. 공통 LISP 및 EMACS LISP를위한 버전이 있으며, 준 주가 및 매크로의 사용을 보여줍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top