Last active
August 29, 2015 13:57
-
-
Save zeptometer/9781601 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; このsyntax-rulesが | |
(syntax-rules () | |
((let name ((var init) ...) body ...) | |
((lambda () | |
(define (name var ...) | |
body ...) | |
(name init ...)))) | |
((let ((var init) ...) body ...) | |
((lambda (var ...) body ...) init ...))) | |
;; こう展開されるわけじゃ | |
(er-macro-transformer@176 | |
(lambda (expr@1459 rename@1460 cmp@1461) | |
(define (reverse*@1463 l@1462) | |
((lambda () | |
(define loop@1464 | |
(lambda (r@1465 l@1466) | |
(if (pair?@6 l@1466) | |
(loop@1464 | |
(cons@7 (car@8 l@1466) r@1465) | |
(cdr@9 l@1466)) | |
(cons@7 l@1466 r@1465)))) | |
(loop@1464 (car@8 l@1462) (cdr@9 l@1462))))) | |
((lambda (name/0@1467 var/1@1468 init/1@1469 body/1@1470) | |
((lambda (result@1471) | |
(if result@1471 | |
(cons@7 | |
(cons@7 | |
(rename@1460 'lambda) | |
(cons@7 | |
'() | |
(cons@7 | |
(cons@7 | |
(rename@1460 'define) | |
(cons@7 | |
(cons@7 | |
name/0@1467 | |
(append@21 | |
(map@125 | |
(lambda (var/0@1472) var/0@1472) | |
var/1@1468) | |
'())) | |
(append@21 | |
(map@125 | |
(lambda (body/0@1473) body/0@1473) | |
body/1@1470) | |
'()))) | |
(cons@7 | |
(cons@7 | |
name/0@1467 | |
(append@21 | |
(map@125 | |
(lambda (init/0@1474) init/0@1474) | |
init/1@1469) | |
'())) | |
'())))) | |
'()) | |
((lambda (var/1@1475 init/1@1476 body/1@1477) | |
((lambda (result@1478) | |
(if result@1478 | |
(cons@7 | |
(cons@7 | |
(rename@1460 'lambda) | |
(cons@7 | |
(append@21 | |
(map@125 | |
(lambda (var/0@1479) var/0@1479) | |
var/1@1475) | |
'()) | |
(append@21 | |
(map@125 | |
(lambda (body/0@1480) body/0@1480) | |
body/1@1477) | |
'()))) | |
(append@21 | |
(map@125 | |
(lambda (init/0@1481) init/0@1481) | |
init/1@1476) | |
'())) | |
'(syntax-error no matching pattern))) | |
(call/cc@141 | |
(lambda (exit@1482) | |
((lambda (expr@1483) | |
(begin | |
(if (pair?@6 expr@1483) | |
((lambda (expr@1484) | |
(begin | |
((lambda (expr@1485) | |
(begin | |
((lambda (expr@1486) | |
(if (not@4 (eqv?@2 '() expr@1486)) | |
(exit@1482 #f))) | |
(car@8 expr@1485)) | |
((lambda (expr@1487) | |
((lambda () | |
(define loop@1488 | |
(lambda (expr@1489) | |
(if (not@4 (null?@16 expr@1489)) | |
((lambda (var/0@1490 | |
init/0@1491) | |
((lambda (expr@1492) | |
(begin | |
(if (pair?@6 | |
expr@1492) | |
((lambda (expr@1493) | |
(set! var/0@1490 | |
expr@1493)) | |
(car@8 expr@1492)) | |
(exit@1482 #f)) | |
(if (pair?@6 | |
(cdr@9 expr@1492)) | |
(begin | |
((lambda (expr@1494) | |
(set! init/0@1491 | |
expr@1494)) | |
(car@8 (cdr@9 expr@1492))) | |
((lambda (expr@1495) | |
(if (not@4 (eqv?@2 | |
'() | |
expr@1495)) | |
(exit@1482 | |
#f))) | |
(cdr@9 (cdr@9 expr@1492)))) | |
(exit@1482 #f)))) | |
(car@8 expr@1489)) | |
(set! var/1@1475 | |
(cons@7 | |
var/0@1490 | |
var/1@1475)) | |
(set! init/1@1476 | |
(cons@7 | |
init/0@1491 | |
init/1@1476)) | |
(loop@1488 | |
(cdr@9 expr@1489))) | |
'() | |
'())))) | |
(loop@1488 expr@1487)))) | |
(reverse*@1463 | |
(cons@7 '() (cdr@9 expr@1485)))))) | |
(reverse*@1463 expr@1484)))) | |
(car@8 expr@1483)) | |
(exit@1482 #f)) | |
((lambda (expr@1496) | |
(begin | |
((lambda (expr@1497) | |
(if (not@4 (eqv?@2 '() expr@1497)) | |
(exit@1482 #f))) | |
(car@8 expr@1496)) | |
((lambda (expr@1498) | |
((lambda () | |
(define loop@1499 | |
(lambda (expr@1500) | |
(if (not@4 (null?@16 expr@1500)) | |
((lambda (body/0@1501) | |
((lambda (expr@1502) | |
(set! body/0@1501 expr@1502)) | |
(car@8 expr@1500)) | |
(set! body/1@1477 | |
(cons@7 | |
body/0@1501 | |
body/1@1477)) | |
(loop@1499 (cdr@9 expr@1500))) | |
'())))) | |
(loop@1499 expr@1498)))) | |
(reverse*@1463 | |
(cons@7 '() (cdr@9 expr@1496)))))) | |
(reverse*@1463 (cdr@9 expr@1483)))) | |
#t) | |
(cdr@9 expr@1459)))))) | |
() | |
() | |
()))) | |
(call/cc@141 | |
(lambda (exit@1503) | |
((lambda (expr@1504) | |
(begin | |
(if (pair?@6 expr@1504) | |
((lambda (expr@1505) (set! name/0@1467 expr@1505)) | |
(car@8 expr@1504)) | |
(exit@1503 #f)) | |
(if (pair?@6 (cdr@9 expr@1504)) | |
((lambda (expr@1506) | |
(begin | |
((lambda (expr@1507) | |
(begin | |
((lambda (expr@1508) | |
(if (not@4 (eqv?@2 '() expr@1508)) | |
(exit@1503 #f))) | |
(car@8 expr@1507)) | |
((lambda (expr@1509) | |
((lambda () | |
(define loop@1510 | |
(lambda (expr@1511) | |
(if (not@4 (null?@16 expr@1511)) | |
((lambda (var/0@1512 init/0@1513) | |
((lambda (expr@1514) | |
(begin | |
(if (pair?@6 expr@1514) | |
((lambda (expr@1515) | |
(set! var/0@1512 | |
expr@1515)) | |
(car@8 expr@1514)) | |
(exit@1503 #f)) | |
(if (pair?@6 | |
(cdr@9 expr@1514)) | |
(begin | |
((lambda (expr@1516) | |
(set! init/0@1513 | |
expr@1516)) | |
(car@8 (cdr@9 expr@1514))) | |
((lambda (expr@1517) | |
(if (not@4 (eqv?@2 | |
'() | |
expr@1517)) | |
(exit@1503 #f))) | |
(cdr@9 (cdr@9 expr@1514)))) | |
(exit@1503 #f)))) | |
(car@8 expr@1511)) | |
(set! var/1@1468 | |
(cons@7 var/0@1512 var/1@1468)) | |
(set! init/1@1469 | |
(cons@7 init/0@1513 init/1@1469)) | |
(loop@1510 (cdr@9 expr@1511))) | |
'() | |
'())))) | |
(loop@1510 expr@1509)))) | |
(reverse*@1463 (cons@7 '() (cdr@9 expr@1507)))))) | |
(reverse*@1463 expr@1506)))) | |
(car@8 (cdr@9 expr@1504))) | |
(exit@1503 #f)) | |
((lambda (expr@1518) | |
(begin | |
((lambda (expr@1519) | |
(if (not@4 (eqv?@2 '() expr@1519)) | |
(exit@1503 #f))) | |
(car@8 expr@1518)) | |
((lambda (expr@1520) | |
((lambda () | |
(define loop@1521 | |
(lambda (expr@1522) | |
(if (not@4 (null?@16 expr@1522)) | |
((lambda (body/0@1523) | |
((lambda (expr@1524) | |
(set! body/0@1523 expr@1524)) | |
(car@8 expr@1522)) | |
(set! body/1@1470 | |
(cons@7 body/0@1523 body/1@1470)) | |
(loop@1521 (cdr@9 expr@1522))) | |
'())))) | |
(loop@1521 expr@1520)))) | |
(reverse*@1463 (cons@7 '() (cdr@9 expr@1518)))))) | |
(reverse*@1463 (cdr@9 (cdr@9 expr@1504))))) | |
#t) | |
(cdr@9 expr@1459)))))) | |
() | |
() | |
() | |
()))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment