summaryrefslogtreecommitdiff
path: root/scheme/sweet-macros
diff options
context:
space:
mode:
Diffstat (limited to 'scheme/sweet-macros')
-rw-r--r--scheme/sweet-macros/helper1.mzscheme.sls27
-rw-r--r--scheme/sweet-macros/helper2.mzscheme.sls24
-rw-r--r--scheme/sweet-macros/helper3.mzscheme.sls29
-rw-r--r--scheme/sweet-macros/main.sls4
4 files changed, 2 insertions, 82 deletions
diff --git a/scheme/sweet-macros/helper1.mzscheme.sls b/scheme/sweet-macros/helper1.mzscheme.sls
deleted file mode 100644
index a5964b5..0000000
--- a/scheme/sweet-macros/helper1.mzscheme.sls
+++ /dev/null
@@ -1,27 +0,0 @@
-#!r6rs
-(library (sweet-macros helper1)
-(export guarded-syntax-case)
-(import (rnrs))
-
-(define-syntax guarded-syntax-case
- (let ((add-clause
- (lambda (clause acc)
- (syntax-case clause ()
- ((pattern skeleton . rest)
- (syntax-case #'rest ()
- ((cond? else1 else2 ...)
- (cons*
- #'(pattern cond? skeleton)
- #'(pattern (begin else1 else2 ...))
- acc))
- ((cond?)
- (cons #'(pattern cond? skeleton) acc))
- (()
- (cons #'(pattern skeleton) acc))
- ))))))
- (lambda (x)
- (syntax-case x ()
- ((guarded-syntax-case y (literal ...) clause ...)
- (with-syntax (((c ...) (fold-right add-clause '() #'(clause ...))))
- #'(syntax-case y (literal ...) c ...)))))))
-)
diff --git a/scheme/sweet-macros/helper2.mzscheme.sls b/scheme/sweet-macros/helper2.mzscheme.sls
deleted file mode 100644
index 29045f5..0000000
--- a/scheme/sweet-macros/helper2.mzscheme.sls
+++ /dev/null
@@ -1,24 +0,0 @@
-#!r6rs
-(library (sweet-macros helper2)
-(export syntax-match)
-(import (rnrs) (for (rnrs) (meta -1))
-(for (sweet-macros helper1) (meta -1) (meta 0) (meta 1)))
-
-(define-syntax syntax-match
- (lambda (y)
- (guarded-syntax-case y (sub)
-
- ((self (literal ...) (sub patt skel rest ...) ...)
- #'(lambda (x) (self x (literal ...) (sub patt skel rest ...) ...)))
-
- ((self x (literal ...) (sub patt skel rest ...) ...)
- #'(guarded-syntax-case x (<literals> <patterns> literal ...)
- ((ctx <literals>) #''(literal ...))
- ((ctx <patterns>) #''((... (... patt)) ...))
- (patt skel rest ...)
- ...)
- (for-all identifier? #'(literal ...))
- (syntax-violation 'syntax-match "Found non identifier" #'(literal ...)
- (remp identifier? #'(literal ...))))
- )))
-)
diff --git a/scheme/sweet-macros/helper3.mzscheme.sls b/scheme/sweet-macros/helper3.mzscheme.sls
deleted file mode 100644
index f737dc0..0000000
--- a/scheme/sweet-macros/helper3.mzscheme.sls
+++ /dev/null
@@ -1,29 +0,0 @@
-#!r6rs
-(library (sweet-macros)
-(export syntax-match def-syntax)
-(import (rnrs) (for (sweet-macros helper2) run expand))
-
-(define-syntax def-syntax
- (syntax-match (extends)
-
- (sub (def-syntax name (extends parent) (literal ...) clause ...)
- #'(def-syntax name
- (syntax-match (literal ...)
- clause ...
- (sub x ((parent <transformer>) #'x)))))
-
- (sub (def-syntax (name . args) skel rest ...)
- #'(def-syntax name (syntax-match () (sub (name . args) skel rest ...))))
-
- (sub (def-syntax name transformer)
- #'(define-syntax name
- (lambda (x)
- (syntax-case x (<source> <transformer>)
- ((name <transformer>) #'(... (... transformer)))
- ((name <source>) #''(... (... transformer)))
- (x (transformer #'x)))))
- (identifier? #'name)
- (syntax-violation 'def-syntax "Invalid name" #'name))
-
- ))
-)
diff --git a/scheme/sweet-macros/main.sls b/scheme/sweet-macros/main.sls
index c7b78f2..5ba2912 100644
--- a/scheme/sweet-macros/main.sls
+++ b/scheme/sweet-macros/main.sls
@@ -1,8 +1,8 @@
(library (sweet-macros)
-;;; Version: 0.8
+;;; Version: 0.8.1
;;; Author: Michele Simionato
;;; Email: michele.simionato@gmail.com
-;;; Date: 22-Apr-2009
+;;; Date: 23-Apr-2009
;;; Licence: BSD
(export syntax-match def-syntax syntax-expand sub)
(import (rnrs))