将Lisp宏转换为Clojure

时间:2016-04-04 21:36:00

标签: clojure macros

嘿大家所以我正在寻找一种方法将lisp宏转换为在Clojure中工作我看了一些其他帖子,谈论你是否可以转换,但他们真的没有展示一个例子,也许正在寻找一些帮助对此。

(defmacro n-of (n form) 
  (let ((lst-sym (gensym)) 
        (i-sym (gensym))) 
    `(let ((,lst-sym ())) 
       (dotimes (,i-sym ,n) 
         (push ,form ,lst-sym)) 
       (nreverse ,lst-sym))))

1 个答案:

答案 0 :(得分:2)

对于lisp宏,我假设Common Lisp宏。

(defmacro n-of [n & form]
  `(let [f# #(do ~@form)]
     (take ~n (repeatedly f#))))

&就像和休息或身体一样。 #()是(lambda ...)。 〜@是,@ - 。 '〜'是','。