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]