1#!nobacktrace 2;;; Ypsilon Scheme System 3;;; Copyright (c) 2004-2008 Y.FUJITA, LittleWing Company Limited. 4;;; See license.txt for terms and conditions of use. 5 6(library (tidbits define-inline) 7 (export define-inline) 8 (import (rnrs)) 9 10 (define-syntax define-inline-assistant 11 (syntax-rules () 12 ((_ func () (args ...) (vars ...) . body) 13 (define-syntax func 14 (syntax-rules () 15 ((_ args ...) 16 (let ((vars args) ...) . body))))) 17 ((_ func (e1 e2 ...) (args ...) . more) 18 (define-inline-assistant func (e2 ...) (temp args ...) . more)))) 19 20 (define-syntax define-inline 21 (syntax-rules (lambda) 22 ((_ func (lambda (vars ...) body1 body2 ...)) 23 (define-inline-assistant func (vars ...) () (vars ...) body1 body2 ...)) 24 ((_ (func vars ...) body1 body2 ...) 25 (define-inline-assistant func (vars ...) () (vars ...) body1 body2 ...)))) 26 27 ) ;[end]