diff options
Diffstat (limited to 'ice-9/macros.scm')
-rw-r--r-- | ice-9/macros.scm | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/ice-9/macros.scm b/ice-9/macros.scm new file mode 100644 index 000000000..e697861d1 --- /dev/null +++ b/ice-9/macros.scm @@ -0,0 +1,28 @@ +;;; {Macros} +;;; + +;; actually....hobbit might be able to hack these with a little +;; coaxing +;; +(module (ice-9 macros) + (export define-macro define-syntax-macro defmacro:transformer defmacro:syntax-transformer) + (open (ice-9 guile) (ice-9 defmacro))) + + +(defmacro define-macro (first . rest) + (let ((name (if (symbol? first) first (car first))) + (transformer + (if (symbol? first) + (car rest) + `(lambda ,(cdr first) ,@rest)))) + `(define ,name (defmacro:transformer ,transformer)))) + + +(defmacro define-syntax-macro (first . rest) + (let ((name (if (symbol? first) first (car first))) + (transformer + (if (symbol? first) + (car rest) + `(lambda ,(cdr first) ,@rest)))) + `(define ,name (defmacro:syntax-transformer ,transformer)))) + |