Fixed the bug! ctx has env in it, and was being returned upwards, messing up the environment of subsequently compiled things. The key is to make sure things that modify the environment (compiling functions) return the env it was passed in the ctx

This commit is contained in:
Nathan Braswell
2022-01-25 16:51:06 -05:00
parent 77c7a05a28
commit d4752eddb4
2 changed files with 16 additions and 11 deletions

View File

@@ -7,11 +7,13 @@
(let1 lambda (vau se (p b1) (wrap (eval (array vau p b1) se)))
(let1 current-env (vau de () de)
(let1 cons (lambda (h t) (concat (array h) t))
(let1 lapply (lambda (f p) (eval (cons (unwrap f) p) (current-env)))
(let1 vapply (lambda (f p ede) (eval (cons f p) ede))
(let1 Y (lambda (f)
(let1 lapply (lambda (f1 p) (eval (cons (unwrap f1) p) (current-env)))
(let1 vapply (lambda (f2 p ede) (eval (cons f2 p) ede))
(let1 Y (lambda (f3)
((lambda (x1) (x1 x1))
(lambda (x2) (f (lambda (& y) (lapply (x2 x2) y))))))
(lambda (x2) (f3 (lambda (& y) (lapply (x2 x2) y))))))
;(let1 vY (lambda (f)
; ((lambda (x3) (x3 x3))
; (lambda (x4) (f (vau de (& y) (vapply (x4 x4) y de))))))
@@ -20,7 +22,7 @@
(array 'open 3 "test_self_out" (lambda (fd code)
(array 'write fd "wabcdefghi" (lambda (written code)
(array 'write fd "wabcdefghijk" (lambda (written code)
(array 'exit written)))))
;(array 'write 1 "test_self_out2" (vau (written code) 1))