blob: e697861d143f3fd6f6c3ef818b682bc20bbeb677 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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))))
|