summaryrefslogtreecommitdiff
path: root/ice-9/macros.scm
diff options
context:
space:
mode:
Diffstat (limited to 'ice-9/macros.scm')
-rw-r--r--ice-9/macros.scm28
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))))
+