racket/collects/scheme/private/old-if.ss
Matthew Flatt 39cedb62ed v3.99.0.2
svn: r7706
2007-11-13 12:40:00 +00:00

33 lines
934 B
Scheme

(module old-if '#%kernel
(#%require (for-syntax '#%kernel))
(#%provide if*)
(define-syntaxes (if*)
(lambda (stx)
(let-values ([(if-stx) (quote-syntax if)])
(if (pair? (syntax-e stx))
(let-values ([(l) (syntax->list stx)])
(if (if l
(if (= (length l) 3)
#t
#f)
#f)
(datum->syntax
stx
(list if-stx
(cadr l)
(caddr l)
(quote-syntax (void)))
stx
stx)
(datum->syntax
stx
(cons if-stx
(cdr (syntax-e stx)))
stx
stx)))
(datum->syntax
if-stx
'if
stx))))))