clean up code

This commit is contained in:
Yuito Murase 2014-04-03 15:30:42 +09:00
parent 85db821ad2
commit 7af2f1e11d
1 changed files with 294 additions and 308 deletions

View File

@ -1,10 +1,10 @@
(import (scheme base)
(define-library (picrin syntax-rules)
(import (scheme base)
(scheme cxr)
(picrin macro)
(scheme write))
(picrin macro))
;;; utility functions
(define (reverse* l)
(define (reverse* l)
;; (reverse* '(a b c d . e)) => (e d c b a)
(let loop ((a '())
(d l))
@ -12,21 +12,21 @@
(loop (cons (car d) a) (cdr d))
(cons d a))))
(define (var->sym v)
(define (var->sym v)
(let loop ((cnt 0)
(v v))
(if (symbol? v)
(string->symbol (string-append (symbol->string v) "/" (number->string cnt)))
(loop (+ 1 cnt) (car v)))))
(define push-var list)
(define push-var list)
(define (every? pred l)
(define (every? pred l)
(if (null? l)
#t
(and (pred (car l)) (every? pred (cdr l)))))
(define (flatten l)
(define (flatten l)
(cond
((null? l) '())
((pair? (car l))
@ -34,8 +34,8 @@
(else
(cons (car l) (flatten (cdr l))))))
;;; main function
(define-syntax syntax-rules
;;; main function
(define-syntax syntax-rules
(er-macro-transformer
(lambda (form r compare)
(define _define (r 'define))
@ -188,7 +188,7 @@
#t)
vars))))
;;; compile expand
;;; compile expand
(define (compile-expand ellipsis reserved template)
(letrec ((compile-expand-base
(lambda (template ellipsis-valid)
@ -318,18 +318,4 @@
`(,_syntax-error "malformed syntax-rules"))))))
;;; test code
(import (scheme write))
(define-syntax hoge
(syntax-rules ()
((hoge (a ...) ...) '((a ...) ...))
((hoge (a b) ...) '(a ...))
((hoge a b ... c . d) 'c)))
(display (hoge (1 2 3) (3 4 5) (5 6 7)))
(newline)
(display (hoge (a b) (c d) (e f)))
(newline)
(display (hoge a b c))
(newline)
(export syntax-rules))