Created
August 23, 2023 07:38
-
-
Save Michaelgathara/91c36c6f36618332627ea38ac14d39c1 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
#lang racket | |
(define (call num1 num2) | |
(let ([x num1] [y num2]) x)) | |
(define (brouhaha_main) | |
(call 5 42)) | |
'((define (call num1 num2) | |
(let ([x num1] [y num2]) x)) | |
(define (brouhaha_main) | |
(call '5 '42))) | |
'((define (call num1 num2) | |
(let ([x num1] [y num2]) x)) | |
(define (brouhaha_main) | |
(call '5 '42))) | |
'((define (prov (define (call num1 num2) | |
(let ([x num1] [y num2]) x))) | |
(call num1 num2) | |
(let (prov | |
[let | |
((x num1) (y num2)) | |
x]) | |
((x num1) (y num2)) | |
x)) | |
(define (prov (define (brouhaha_main) | |
(call '5 '42))) | |
(brouhaha_main) | |
(app (prov (call '5 '42)) call (app (prov '5) quote 5) (app (prov '42) quote 42)))) | |
'((define (prov (define (call num1 num2) | |
(let ([x num1] [y num2]) x))) | |
(call num1 num2) | |
(let (prov | |
[let | |
((x num1) (y num2)) | |
x]) | |
((x num1)) | |
(let (prov | |
[let | |
((x num1) (y num2)) | |
x]) | |
((y num2)) | |
x))) | |
(define (prov (define (brouhaha_main) | |
(call '5 '42))) | |
(brouhaha_main) | |
(let (prov | |
[let | |
((a2349 5)) | |
(let ([a2350 (app (prov '5) quote a2349)]) | |
(let ([a2351 42]) | |
(let ([a2352 (app (prov '42) quote a2351)]) | |
(app (prov (call '5 '42)) call a2350 a2352))))]) | |
((x2353 (let ([a2349 5]) | |
(let ([a2350 (app (prov '5) quote a2349)]) | |
(let ([a2351 42]) | |
(let ([a2352 (app (prov '42) quote a2351)]) | |
(app (prov (call '5 '42)) call a2350 a2352))))))) | |
x2353))) | |
'((define (call kont2354 num1 num2) | |
(let kont2354 (prov | |
[let | |
((x num1) (y num2)) | |
x]) | |
((x num1)) | |
(let (prov | |
[let | |
((x num1) (y num2)) | |
x]) | |
((y num2)) | |
x))) | |
(define (brouhaha_main kont2355) | |
(let kont2355 (prov | |
[let | |
((a2349 5)) | |
(let ([a2350 (app (prov '5) quote a2349)]) | |
(let ([a2351 42]) | |
(let ([a2352 (app (prov '42) quote a2351)]) | |
(app (prov (call '5 '42)) call a2350 a2352))))]) | |
((x2353 (let ([a2349 5]) | |
(let ([a2350 (app (prov '5) quote a2349)]) | |
(let ([a2351 42]) | |
(let ([a2352 (app (prov '42) quote a2351)]) | |
(app (prov (call '5 '42)) call a2350 a2352))))))) | |
x2353))) | |
'((define (call kont2318 num1 num2) | |
(let ([f23202322 (lambda (x23142323) | |
(let ([f23192324 (lambda (y23152325) (kont2318 x23142323))]) | |
(f23192324 num2)))]) | |
(f23202322 num1))) | |
(define (brouhaha_main kont2321) | |
(let ([a23162326 '5]) (let ([a23172327 '42]) (call kont2321 a23162326 a23172327))))) | |
'((define (call kont2349 num1 num2) | |
(let kont2349 (prov | |
[let | |
((x num1) (y num2)) | |
x]) | |
((x num1)) | |
(let (prov | |
[let | |
((x num1) (y num2)) | |
x]) | |
((y num2)) | |
x))) | |
(define (brouhaha_main kont2350) | |
(let kont2350 (prov | |
[let | |
((a2346 '5)) | |
(let ([a2347 '42]) (app (prov (call '5 '42)) call a2346 a2347))]) | |
((x2348 (let ([a2346 '5]) (let ([a2347 '42]) (app (prov (call '5 '42)) call a2346 a2347))))) | |
x2348))) | |
'((proc (call _2351 kont2349 num1 num2) | |
(clo-app let | |
kont2349 | |
(prov (let ([x num1] [y num2]) x)) | |
((x num1)) | |
(let (prov | |
[let | |
((x num1) (y num2)) | |
x]) | |
((y num2)) | |
x))) | |
(proc (brouhaha_main _2352 kont2350) | |
(clo-app | |
let | |
kont2350 | |
(prov (let ([a2346 '5]) (let ([a2347 '42]) (app (prov (call '5 '42)) call a2346 a2347)))) | |
((x2348 (let ([a2346 '5]) (let ([a2347 '42]) (app (prov (call '5 '42)) call a2346 a2347))))) | |
x2348))) | |
; desugar, alphatize, add-tags | |
'((define (prov (define (call num1 num2) | |
(let ([x num1] [y num2]) x))) | |
(call num1 num2) | |
(let (prov | |
[let | |
((x num1) (y num2)) | |
x]) | |
((x num1) (y num2)) | |
x)) | |
(define (prov (define (brouhaha_main) | |
(call '5 '42))) | |
(brouhaha_main) | |
(app (prov (call '5 '42)) call '5 '42))) | |
; anf-convert | |
'((define (prov (define (call num1 num2) | |
(let ([x num1] [y num2]) x))) | |
(call num1 num2) | |
(let (prov | |
[let | |
((x num1) (y num2)) | |
x]) | |
((x num1)) | |
(let (prov | |
[let | |
((x num1) (y num2)) | |
x]) | |
((y num2)) | |
x))) | |
(define (prov (define (brouhaha_main) | |
(call '5 '42))) | |
(brouhaha_main) | |
(let ([x2348 (let ([a2346 '5]) (let ([a2347 '42]) (app (prov (call '5 '42)) call a2346 a2347)))]) | |
x2348))) | |
'((define (call num1 num2) | |
(let ([x2314 num1]) (let ([y2315 num2]) x2314))) | |
(define (brouhaha_main) | |
(let ([a2316 '5]) (let ([a2317 '42]) (call a2316 a2317))))) | |
'((define (prov (define (call num1 num2) | |
(let ([x num1] [y num2]) x))) | |
(call num1 num2) | |
(let (prov | |
[let | |
((x num1) (y num2)) | |
x]) | |
((x num1)) | |
(let (prov | |
[let | |
((x num1) (y num2)) | |
x]) | |
((y num2)) | |
x))) | |
(define (prov (define (brouhaha_main) | |
(call '5 '42))) | |
(brouhaha_main) | |
(let (prov | |
[let | |
((a2344 '5)) | |
(let ([a2345 '42]) (app (prov (call '5 '42)) call a2344 a2345))]) | |
((xy2346 (let ([a2344 '5]) (let ([a2345 '42]) (app (prov (call '5 '42)) call a2344 a2345))))) | |
xy2346))) | |
'((define (call kont2347 num1 num2) | |
(let kont2347 (prov | |
[let | |
((x num1) (y num2)) | |
x]) | |
((x num1)) | |
(let (prov | |
[let | |
((x num1) (y num2)) | |
x]) | |
((y num2)) | |
x))) | |
(define (brouhaha_main kont2348) | |
(let kont2348 (prov | |
[let | |
((a2344 '5)) | |
(let ([a2345 '42]) (app (prov (call '5 '42)) call a2344 a2345))]) | |
((xy2346 (let ([a2344 '5]) (let ([a2345 '42]) (app (prov (call '5 '42)) call a2344 a2345))))) | |
xy2346))) | |
'((define (call kont2347 num1 num2) | |
(let kont2347 (prov | |
[let | |
((x num1) (y num2)) | |
x]) | |
((x num1)) | |
(let (prov | |
[let | |
((x num1) (y num2)) | |
x]) | |
((y num2)) | |
x))) | |
(define (brouhaha_main kont2348) | |
(let kont2348 (prov | |
[let | |
((a2344 '5)) | |
(let ([a2345 '42]) (app (prov (call '5 '42)) call a2344 a2345))]) | |
((xy2346 (let ([a2344 '5]) (let ([a2345 '42]) (app (prov (call '5 '42)) call a2344 a2345))))) | |
xy2346))) | |
after | |
cps: | |
'((define (prov (define (call num1 num2) | |
(let ([x num1] [y num2]) x))) | |
(call kont2345 num1 num2) | |
(let (prov | |
[lambda | |
(x) | |
(let (prov | |
[lambda | |
(y) | |
(kont2345 x)]) | |
((f2346 (lambda (y) (kont2345 x)))) | |
(f2346 num2))]) | |
((f2347 (lambda (x) | |
(let (prov | |
[lambda | |
(y) | |
(kont2345 x)]) | |
((f2346 (lambda (y) (kont2345 x)))) | |
(f2346 num2))))) | |
(f2347 num1))) | |
(define (prov (define (brouhaha_main) | |
(call '5 '42))) | |
(brouhaha_main kont2348) | |
(let (prov '5) | |
((a2343 '5)) | |
(let (prov '42) | |
((a2344 '42)) | |
(app (prov (call '5 '42)) call kont2348 a2343 a2344))))) | |
'((define (prov (define (call num1 num2) | |
(let ([x num1] [y num2]) x))) | |
(call kont2345 num1 num2) | |
(let (prov | |
[lambda | |
(x) | |
(let (prov | |
[lambda | |
(y) | |
(kont2345 x)]) | |
((f2346 (lambda (y) (kont2345 x)))) | |
(f2346 num2))]) | |
((f2347 (lambda (x) | |
(let (prov | |
[lambda | |
(y) | |
(kont2345 x)]) | |
((f2346 (lambda (y) (kont2345 x)))) | |
(f2346 num2))))) | |
(f2347 num1))) | |
(define (prov (define (brouhaha_main) | |
(call '5 '42))) | |
(brouhaha_main kont2348) | |
(let (prov '5) | |
((a2343 '5)) | |
(let (prov '42) | |
((a2344 '42)) | |
(app (prov (call '5 '42)) call kont2348 a2343 a2344))))) | |
'((proc (call _2351 kont2347 num1 num2) | |
(clo-app let | |
(prov (lambda (x) | |
(let (prov | |
[lambda | |
(y) | |
(kont2347 x)]) | |
((f2348 (lambda (y) (kont2347 x)))) | |
(f2348 num2)))) | |
((f2349 (lambda (x) | |
(let (prov | |
[lambda | |
(y) | |
(kont2347 x)]) | |
((f2348 (lambda (y) (kont2347 x)))) | |
(f2348 num2))))) | |
(f2349 num1))) | |
(proc (brouhaha_main _2352 kont2350) | |
(clo-app let | |
(prov '5) | |
((a2345 '5)) | |
(let (prov '42) | |
((a2346 '42)) | |
(app (prov (call '5 '42)) call kont2350 a2345 a2346))))) | |
'((define (prov (define (call num1 num2) | |
(let ([x num1] [y num2]) x))) | |
(call kont2347 num1 num2) | |
(let (prov | |
[lambda | |
(x) | |
(let (prov | |
[lambda | |
(y) | |
(kont2347 x)]) | |
((f2348 (lambda (y) (kont2347 x)))) | |
(f2348 num2))]) | |
((f2349 (lambda (x) | |
(let (prov | |
[lambda | |
(y) | |
(kont2347 x)]) | |
((f2348 (lambda (y) (kont2347 x)))) | |
(f2348 num2))))) | |
(f2349 num1))) | |
(define (prov (define (brouhaha_main) | |
(call '5 '42))) | |
(brouhaha_main kont2350) | |
(let (prov '5) | |
((a2345 '5)) | |
(let (prov '42) | |
((a2346 '42)) | |
(app (prov (call '5 '42)) call kont2350 a2345 a2346))))) | |
'((define (prov (define (call num1 num2) | |
(let ([x num1] [y num2]) x))) | |
(call kont2347 num1 num2) | |
(let (prov num1) | |
((f2349 (lambda (x) | |
(let (prov num2) | |
((f2348 (lambda (y) (kont2347 x)))) | |
(f2348 num2))))) | |
(f2349 num1))) | |
(define (prov (define (brouhaha_main) | |
(call '5 '42))) | |
(brouhaha_main kont2350) | |
(let (prov '5) | |
((a2345 '5)) | |
(let (prov '42) | |
((a2346 '42)) | |
(app (prov (call '5 '42)) call kont2350 a2345 a2346))))) | |
'((define (prov (define (call num1 num2) | |
(let ([x num1] [y num2]) x))) | |
(call kont2347 num1 num2) | |
(let (prov | |
[lambda | |
(x) | |
(let (prov | |
[lambda | |
(y) | |
(kont2347 x)]) | |
((f2348 (lambda (y) (kont2347 x)))) | |
(f2348 num2))]) | |
((f2349 (lambda (x) | |
(let (prov | |
[lambda | |
(y) | |
(kont2347 x)]) | |
((f2348 (lambda (y) (kont2347 x)))) | |
(f2348 num2))))) | |
(f2349 num1))) | |
(define (prov (define (brouhaha_main) | |
(call '5 '42))) | |
(brouhaha_main kont2350) | |
(let (prov '5) | |
((a2345 '5)) | |
(let (prov '42) | |
((a2346 '42)) | |
(app (prov (call '5 '42)) call kont2350 a2345 a2346))))) | |
'((define (prov (define (call num1 num2) | |
(let ([x num1] [y num2]) x))) | |
(call kont2347 num1 num2) | |
(let (prov | |
[lambda | |
(x) | |
(let (prov | |
[lambda | |
(y) | |
(kont2347 x)]) | |
((f2348 (lambda (y) (kont2347 x)))) | |
(f2348 num2))]) | |
((f2349 (lambda (x) | |
(let (prov | |
[lambda | |
(y) | |
(kont2347 x)]) | |
((f2348 (lambda (y) (kont2347 x)))) | |
(f2348 num2))))) | |
(f2349 num1))) | |
(define (prov (define (brouhaha_main) | |
(call '5 '42))) | |
(brouhaha_main kont2350) | |
(let (prov '5) | |
((a2345 '5)) | |
(let (prov '42) | |
((a2346 '42)) | |
(app (prov (call '5 '42)) call kont2350 a2345 a2346))))) | |
'((define (prov (define (call num1 num2) | |
(let ([x num1] [y num2]) x))) | |
(call kont2345 num1 num2) | |
(let (prov | |
[lambda | |
(x) | |
(let (prov | |
[lambda | |
(y) | |
(kont2345 x)]) | |
((f2346 (lambda (y) (kont2345 x)))) | |
(f2346 num2))]) | |
((f2347 (lambda (x) | |
(let (prov | |
[lambda | |
(y) | |
(kont2345 x)]) | |
((f2346 (lambda (y) (kont2345 x)))) | |
(f2346 num2))))) | |
(f2347 num1))) | |
(define (prov (define (brouhaha_main) | |
(call '5 '42))) | |
(brouhaha_main kont2348) | |
(let (prov '5) | |
((a2343 '5)) | |
(let (prov '42) | |
((a2344 '42)) | |
(app (prov (call '5 '42)) call kont2348 a2343 a2344))))) | |
'((define (prov (define (call num1 num2) | |
(let ([x num1] [y num2]) x))) | |
(call kont2345 num1 num2) | |
(let (prov | |
[lambda | |
(x) | |
(let (prov | |
[lambda | |
(y) | |
(kont2345 x)]) | |
((f2346 (lambda (y) (kont2345 x)))) | |
(f2346 num2))]) | |
((f2347 (lambda (x) | |
(let (prov | |
[lambda | |
(y) | |
(kont2345 x)]) | |
((f2346 (lambda (y) (kont2345 x)))) | |
(f2346 num2))))) | |
(f2347 num1))) | |
(define (prov (define (brouhaha_main) | |
(call '5 '42))) | |
(brouhaha_main kont2348) | |
(let (prov '5) | |
((a2343 '5)) | |
(let (prov '42) | |
((a2344 '42)) | |
(app (prov (call '5 '42)) call kont2348 a2343 a2344))))) | |
'((proc (lam2349 env2350 y) | |
(let ([kont2345 (env-ref env2350 2)]) (let ([x (env-ref env2350 1)]) (clo-app kont2345 x)))) | |
(proc (lam2351 env2352 x) | |
(let ([kont2345 (env-ref env2352 2)]) | |
(let ([num2 (env-ref env2352 1)]) | |
(let ([f2346 (make-closure lam2349 x kont2345)]) (clo-app f2346 num2))))) | |
(proc (call _2353 kont2345 num1 num2) | |
(let ([f2347 (make-closure lam2351 num2 kont2345)]) (clo-app f2347 num1))) | |
(proc (brouhaha_main _2356 kont2348) | |
(let ([a2343 '5]) | |
(let ([a2344 '42]) (clo-app app (prov (call '5 '42)) call kont2348 a2343 a2344))))) | |
'((proc (lam2349 env2350 y) | |
(let ([kont2345 (env-ref env2350 2)]) (let ([x (env-ref env2350 1)]) (clo-app kont2345 x)))) | |
(proc (lam2351 env2352 x) | |
(let ([kont2345 (env-ref env2352 2)]) | |
(let ([num2 (env-ref env2352 1)]) | |
(let ([f2346 (make-closure lam2349 x kont2345)]) (clo-app f2346 num2))))) | |
(proc (prov (define (call num1 num2) | |
(let ([x num1] [y num2]) x))) | |
(call _2353 kont2345 num1 num2) | |
(let ([f2347 (make-closure lam2351 num2 kont2345)]) (clo-app f2347 num1))) | |
(proc (prov (define (brouhaha_main) | |
(call '5 '42))) | |
(brouhaha_main _2356 kont2348) | |
(let ([a2343 '5]) | |
(let ([a2344 '42]) (clo-app app (prov (call '5 '42)) call kont2348 a2343 a2344))))) | |
'("241: " a23172327 42) | |
'("241: " a23162326 5) | |
'((proc (lam2328 env2329 y23152325) | |
(let ([kont2318 (env-ref env2329 2)]) | |
(let ([x23142323 (env-ref env2329 1)]) (clo-app kont2318 x23142323)))) | |
(proc (lam2330 env2331 x23142323) | |
(let ([kont2318 (env-ref env2331 2)]) | |
(let ([num2 (env-ref env2331 1)]) | |
(let ([f23192324 (make-closure lam2328 x23142323 kont2318)]) (clo-app f23192324 num2))))) | |
(proc (call _2332 kont2318 num1 num2) | |
(let ([f23202322 (make-closure lam2330 num2 kont2318)]) (clo-app f23202322 num1))) | |
(proc (brouhaha_main _2335 kont2321) | |
(let ([a23162326 '5]) (let ([a23172327 '42]) (clo-app call kont2321 a23162326 a23172327))))) | |
'((proc (lam2328 env2329 y23152325) | |
(let ([kont2318 (env-ref env2329 2)]) | |
(let ([x23142323 (env-ref env2329 1)]) (clo-app kont2318 x23142323)))) | |
(proc (lam2330 env2331 x23142323) | |
(let ([kont2318 (env-ref env2331 2)]) | |
(let ([num2 (env-ref env2331 1)]) | |
(let ([f23192324 (make-closure lam2328 x23142323 kont2318)]) (clo-app f23192324 num2))))) | |
(proc (call _2332 kont2318 num1 num2) | |
(let ([f23202322 (make-closure lam2330 num2 kont2318)]) (clo-app f23202322 num1))) | |
(proc (brouhaha_main _2335 kont2321) | |
(let ([a23162326 '5]) (let ([a23172327 '42]) (clo-app call kont2321 a23162326 a23172327))))) | |
'((proc (lam2349 env2350 y) | |
(let ([kont2345 (env-ref env2350 2)]) (let ([x (env-ref env2350 1)]) (clo-app kont2345 x)))) | |
(proc (lam2351 env2352 x) | |
(let ([kont2345 (env-ref env2352 2)]) | |
(let ([num2 (env-ref env2352 1)]) | |
(let ([f2346 (make-closure lam2349 x kont2345)]) (clo-app f2346 num2))))) | |
(proc (prov (define (call num1 num2) | |
(let ([x num1] [y num2]) x))) | |
(call _2353 kont2345 num1 num2) | |
(let ([f2347 (make-closure lam2351 num2 kont2345)]) (clo-app f2347 num1))) | |
(proc (prov (define (brouhaha_main) | |
(call '5 '42))) | |
(brouhaha_main _2356 kont2348) | |
(let ([a2343 '5]) | |
(let ([a2344 '42]) (clo-app app (prov (call '5 '42)) call kont2348 a2343 a2344))))) | |
'((proc (lam2349 env2350 y) | |
(let ([kont2345 (env-ref env2350 2)]) (let ([x (env-ref env2350 1)]) (clo-app kont2345 x)))) | |
(proc (lam2351 env2352 x) | |
(let ([kont2345 (env-ref env2352 2)]) | |
(let ([num2 (env-ref env2352 1)]) | |
(let ([f2346 (make-closure lam2349 x kont2345)]) (clo-app f2346 num2))))) | |
(proc (prov (define (call num1 num2) | |
(let ([x num1] [y num2]) x))) | |
(call _2353 kont2345 num1 num2) | |
(let ([f2347 (make-closure lam2351 num2 kont2345)]) (clo-app f2347 num1))) | |
(proc (prov (define (brouhaha_main) | |
(call '5 '42))) | |
(brouhaha_main _2356 kont2348) | |
(let ([a2343 '5]) | |
(let ([a2344 '42]) (clo-app app (prov (call '5 '42)) call kont2348 a2343 a2344))))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment