diff options
Diffstat (limited to 'src/lux/analyser/lux.clj')
-rw-r--r-- | src/lux/analyser/lux.clj | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/src/lux/analyser/lux.clj b/src/lux/analyser/lux.clj index b78908922..6877788db 100644 --- a/src/lux/analyser/lux.clj +++ b/src/lux/analyser/lux.clj @@ -293,12 +293,10 @@ (fail* (str "[Analyser Error] Unknown global definition: " name))) (&/$Cons bottom-outer _) - (|let [scopes (&/|tail (&/folds #(&/$Cons (&/get$ &/$name %2) %1) - (&/|map #(&/get$ &/$name %) outer) - (&/|reverse inner))) + (|let [scopes (&/|map #(&/get$ &/$name %) (&/|reverse inner)) [=local inner*] (&/fold2 (fn [register+new-inner frame in-scope] (|let [[register new-inner] register+new-inner - [register* frame*] (&&lambda/close-over (&/get-cached-scope-name in-scope) name register frame)] + [register* frame*] (&&lambda/close-over in-scope name register frame)] (&/T [register* (&/$Cons frame* new-inner)]))) (&/T [(or (->> bottom-outer (&/get$ &/$locals) (&/get$ &/$mappings) (&/|get name)) (->> bottom-outer (&/get$ &/$closure) (&/get$ &/$mappings) (&/|get name))) |