Show
Ignore:
Timestamp:
03/13/09 17:59:53 (4 years ago)
Author:
mokehehe
Message:

ソース圧縮
whenマクロ追加
elseのないifを許容

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/scheme/3imp/macro.scm

    r31130 r31145  
    66  (hash-table-put! *macro-table* name f)) 
    77 
     8(define-macro (define-special-form name . f) 
     9  (if (pair? name) 
     10      `(define-special-form ,(car name) (lambda (%sp% ,@(cdr name)) ,@f)) 
     11    `(add-macro ',name ,(car f)))) 
     12 
    813(define-macro (define-builtin-macro name . f) 
    914  (if (pair? name) 
     
    1116    `(add-macro ',name ,(evaluate (car f))))) 
    1217 
    13 (define-macro (define-special-form name . f) 
    14   (if (pair? name) 
    15       `(define-special-form ,(car name) (lambda (%sp% ,@(cdr name)) ,@f)) 
    16     `(add-macro ',name ,(car f)))) 
    17  
    1818(define (macro? name) 
    19   (if (hash-table-exists? *macro-table* name) 
    20       (hash-table-get *macro-table* name) 
    21     #f)) 
     19  (and (hash-table-exists? *macro-table* name) 
     20       (hash-table-get *macro-table* name))) 
    2221 
    2322(define (all f . args) 
     
    3332        (let ((trns 
    3433               (cond ((macro? name) => (lambda (c) 
    35                                          (if (procedure? c) 
     34                                         (if (primitive-function? c) 
    3635                                             (apply c s (cdr x)) 
    3736                                           (vm-apply s c (cdr x)))))