summaryrefslogtreecommitdiff
path: root/ice-9/macros.scm
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))))