(defmacro switch [choices choice] '(do (choices choice)))
(macroexpand-1 '(switch {1 (print 1) 2 (print 2)} (+ 1 1)))
gives: (do (choices choice))
マクロを学ぶためだけに、スイッチケースをエミュレートしたいと思いました。ここでは、ケースをキーとして、コードを値として実行するディクショナリを指定します。
(+ 1 1) を 2 として評価し、コードを do で実行するためのキーとして使用したかったのです。
ただし、展開されたマクロは、選択肢と選択肢の両方を解決しないコードを提供します。
選択肢と選択肢を引用解除しようとしましたが、うまくいきません。ここで何が欠けていますか?