From c61b9d3c2258510ac897ebd72fe9c68204d8f29d Mon Sep 17 00:00:00 2001 From: Nathan Braswell Date: Sat, 25 Apr 2020 13:05:56 -0400 Subject: [PATCH] fixed closeing with strings --- bf.kp | 21 +++++++++++++++++---- k_prime.krak | 8 ++++---- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/bf.kp b/bf.kp index ec18493..3940d0f 100644 --- a/bf.kp +++ b/bf.kp @@ -111,14 +111,27 @@ ;(def! inner (fn* [x] (do (throw (+ x 1)) (+ x 2)))) -(def! inner (fn* [x] (do (println 7) (+ x 2)))) +;(def! inner (fn* [x] (do (println 7) (+ x 2)))) ;(def! main (fn* [] (do (println (try* ; (inner 7) ; (catch* exp (+ exp 10)))) ; 7))) -(def! main (fn* [] (do (println (try* - (inner 7))) - 7))) +;(def! main (fn* [] (do (println (try* +; (inner 7))) +; 7))) + + +(def! main (fn* [] (let* ( a 7 + b "hello" ) + (do + (try* + ((fn* [] (do (println b) (println "world") a))) + ))))) + + + + + diff --git a/k_prime.krak b/k_prime.krak index a36b534..7cbfe00 100644 --- a/k_prime.krak +++ b/k_prime.krak @@ -1683,9 +1683,6 @@ fun find_closed_vars(defined: set, env: *Env, ast: MalValue): set { } println("end list") } - MalValue::List(l) { - error("Can't get clsoure_vars for " + pr_str(ast, true)) - } MalValue::Vector(l) { var to_ret = set() for (var i = 0; i < l.size; i++;) { @@ -1718,6 +1715,9 @@ fun find_closed_vars(defined: set, env: *Env, ast: MalValue): set { MalValue::False() { return set() } + MalValue::String(s) { + return set() + } MalValue::Function(f) { var new_env = new()->construct(env) for (var i = 0; i < f.parameters.size; i++;) { @@ -1730,7 +1730,7 @@ fun find_closed_vars(defined: set, env: *Env, ast: MalValue): set { return to_ret } } - error("Can't get clsoure_vars for " + pr_str(ast, true)) + error("Can't get closure_vars for " + pr_str(ast, true)) } fun compile_value(top_decs: *str, top_defs: *str, main_init: *str, defs: *str, env: *Env, ast: MalValue, quoted: bool): str { match (ast) {