diff --git a/examples/macron.carp b/examples/macron.carp new file mode 100644 index 00000000..8684e703 --- /dev/null +++ b/examples/macron.carp @@ -0,0 +1,9 @@ + +(def a 10) + +(defmacro m0 (blah) + (list '+ 1 blah)) + +(defmacro m1 (blah) + `(+ 1 ~blah)) + diff --git a/lisp/core.carp b/lisp/core.carp index 875b48a8..e0a83654 100644 --- a/lisp/core.carp +++ b/lisp/core.carp @@ -41,9 +41,26 @@ )) (defmacro quasiquote (form) - ;;(list 'quote ) - (quasiquote-internal form) - ) + (quasiquote-internal form)) + +;; (defn quasiquote-internal [form] +;; (do +;; (println (str "form: " form)) +;; (if (list? form) +;; (match form +;; ('dequote x) x +;; _ (map quasiquote-internal form)) +;; form))) + +;; (defn replace-dequotes [form] +;; (match form +;; () () +;; ('dequote x) x +;; (x ... xs) (cons (replace-dequotes x) (replace-dequotes xs)) +;; x x)) + +;; (defmacro quasiquote (form) +;; (list 'quote (map replace-dequotes form))) (defn assert-approx-eq (target x) (do