mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-23 20:15:05 +02:00
50 lines
1.7 KiB
Scheme
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)))
|