代码之家  ›  专栏  ›  技术社区  ›  Cristián Romo

执行存储为列表的代码

  •  8
  • Cristián Romo  · 技术社区  · 17 年前

    在理解(引用)之后,我很好奇如何执行该语句。我的第一个想法是

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

    (+ 2 21) ,或 x . 如何运行列表中的代码?

    3 回复  |  直到 17 年前
        1
  •  17
  •   Rich    17 年前

    (eval '(+ 2 21))

        2
  •  0
  •   Rich    17 年前

    Backtick示例:您可以使用eval和Backtick实现apply,因为您可以将参数拼接到表单中。这不是世界上最有效率的事情,但是:

    (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))
    

    希望能满足你的好奇心!

        3
  •  0
  •   Anton Nazarov    17 年前

    看看有趣的Lisp教程 http://lisperati.com/