(load "gamma-scheme.cps.sld") (import (gamma-scheme cps) test) (define (wnl x) (write (cps->sexpr (core->cps x))) (newline)) #;(wnl (cps->sexpr cps:with-sub-kont)) (test "constant" '(pass (5) () __toplevel) (cps->sexpr (core->cps 5))) (test "symbol" '(pass (x) () __toplevel) (cps->sexpr (core->cps 'x))) (test "thunk" '(apply x () () __toplevel) (cps->sexpr (core->cps '(x)))) (test "one symbol arg" '(apply x (y) () __toplevel) (cps->sexpr (core->cps '(x y)))) (test "one constant arg" '(apply x (5) () __toplevel) (cps->sexpr (core->cps '(x 5)))) (test "one compound arg" '(apply f (x) () (kappa (__v2) __γ1 (apply x (__v2) __γ1 __toplevel))) (cps->sexpr (core->cps '(x (f x))))) (test "identity" '(pass (lambda ((__γ1 __κ2) (x)) (pass (x) __γ1 __κ2)) () __toplevel) (cps->sexpr (core->cps '(lambda (x) x)))) (test "let bind" '(pass (lambda ((__γ3 __κ4) (x)) (pass (x) __γ3 __κ4)) () (kappa (__v2) __γ1 (apply __v2 (y) __γ1 __toplevel))) (cps->sexpr (core->cps '((lambda (x) x) y))))