2016-04-04 8 views
0

皆さん、私はClojureで動作するようにLispマクロを変換する方法をお探ししています。変換できるかどうかについて話していましたが、おそらくこれについていくつかの助けを探しています。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)))) 

答えて

2

私はCommon Lispマクロを想定しています。 &が&休息や&体のようなものです

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

。 #()は(ラムダ...)です。 〜@、@ - 。 '〜'は '、'です。

+0

... fensはgensymを呼び出す必要がありません。 – kennytilton

+1

フォームが単一の性別であるオリジナルと一緒に行くとすればいいのですか?: (defmacro n-of [n form] '(take〜n(repeated〜form))) – kennytilton

関連する問題