aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2024-12-31 13:08:04 -0500
committerGravatar Peter McGoron 2024-12-31 13:08:04 -0500
commitc6c55fcfb4bfcecce571fd7f13b55e24ead0a0ac (patch)
tree64b9d669b950523cd66505ae8bbe39b5ecf48462
parentstart cps translator (diff)
fix lambda cps printing
-rw-r--r--cps.scm4
-rw-r--r--test.scm11
2 files changed, 13 insertions, 2 deletions
diff --git a/cps.scm b/cps.scm
index d9d5090..d89e1a6 100644
--- a/cps.scm
+++ b/cps.scm
@@ -87,8 +87,8 @@
`(kappa ,formal ,metakont ,(cps->sexpr cps-cmd)))
(after ((let (cps-closure=> form)
=> (formal metakont-formal kont-formal body)))
- `(pass (lambda ((,metakont-formal ,kont-formal) ,formal)
- ,(cps->sexpr body))))
+ `(lambda ((,metakont-formal ,kont-formal) ,formal)
+ ,(cps->sexpr body)))
(after ((let (cps-apply-kont=> form) => (to-pass metakont kont)))
(let ((to-pass (if (cps-closure? to-pass)
(cps->sexpr to-pass)
diff --git a/test.scm b/test.scm
index b2ea9e5..4595f2b 100644
--- a/test.scm
+++ b/test.scm
@@ -31,3 +31,14 @@
'(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))))
+