2
私はClojureのマクロを勉強していて、 "cond"マクロを書こうとしていました。ClojureでCond Macroを書くのを助けてください。
(条件)(引数)への引数の構造化を解除し、再帰的なマクロを書き込む際に問題が発生しました。
私を助けてください。
私はClojureのマクロを勉強していて、 "cond"マクロを書こうとしていました。ClojureでCond Macroを書くのを助けてください。
(条件)(引数)への引数の構造化を解除し、再帰的なマクロを書き込む際に問題が発生しました。
私を助けてください。
私はプロセスを説明するためにこれを書いています。このコードには多くのバグがありますが、できるだけ速やかに面白い部分を手に入れることができます:) マクロへの呼び出しを書き出し、その呼び出しを何に変換するか(この手順はオプションではありません)
それは(defmacro my-cond [test result] `(if ~test ~result nil))
(macroexpand-1 '(my-cond (even? 4) 42) ==> (if (even? 4) 42)
と一致するまで
(my-cond (even? 4) 42 (odd? 4 24))
(if (even? 4) 42 (if (odd? 4) 24)))
は、今ではより一般的にする最も簡単なケースのためのテンプレートを作成した後、(macroexpandは-1 ...)にそれを餌とひねり
(defmacro my-cond [& cases]
`(if (if ~(first cases) ~(second cases) ~(my-cond (drop 2 cases))
を入力して、マクロエクセル-1でマクロエクセルで再生し(「-1」を除いて)、完全に正しいケースに展開されていることを確認してください。
次に、奇数用語など...
次にcore.cljを見て、どれくらい近づいたかを見てください。