33 lines
934 B
Racket
33 lines
934 B
Racket
(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))))))
|