문제
이해 한 후 (인용), 나는 진술이 어떻게 실행 될 수 있는지 궁금합니다. 나의 첫 생각은
(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를위한 버전이 있으며, 준 주가 및 매크로의 사용을 보여줍니다.
제휴하지 않습니다 StackOverflow