cyclone/tests/when.scm
Justin Ethier ff5055664b WIP
2017-12-04 17:59:22 -05:00

50 lines
1.7 KiB
Scheme

(import (scheme base) (scheme write))
(define-syntax my-when
(syntax-rules ()
((my-when test result1 result2 ...)
(if test
(begin result1 result2 ...)))))
(define-syntax my-when2
(syntax-rules ()
((my-when test result1 result2 ...)
(list test))))
(write
(my-when2 #t 1))
(define my-when2*
(lambda (expr$28 rename$29 compare$30)
(car ((lambda (tmp$42)
(if tmp$42
tmp$42
(cons (error "no expansion for" expr$28) #f)))
((lambda (v.1$36)
(if (pair? v.1$36)
((lambda (v.2$37)
((lambda (test)
((lambda (v.3$38)
(if (pair? v.3$38)
((lambda (v.4$39)
((lambda (result1)
((lambda (v.5$40)
(if (list? v.5$40)
((lambda (result2)
(cons (cons-source
(rename$29 'list)
(cons-source test '() '(test))
'(list test))
#f))
v.5$40)
#f))
(cdr v.3$38)))
v.4$39))
(car v.3$38))
#f))
(cdr v.1$36)))
v.2$37))
(car v.1$36))
#f))
(cdr expr$28))))))
(write
(my-when2* '(my-when2* 't 1) (lambda (a) a) (lambda X #f)))