fix atoms not leaking out of let*
authorAnotherTest <ali.mpfard@gmail.com>
Thu, 16 Jan 2020 04:02:22 +0000 (07:32 +0330)
committerAnotherTest <ali.mpfard@gmail.com>
Thu, 16 Jan 2020 04:02:22 +0000 (07:32 +0330)
This was some ironic happenstance

jq/env.jq
jq/step6_file.jq
jq/step7_quote.jq
jq/step8_macros.jq
jq/step9_try.jq
jq/stepA_mal.jq

index bea8eb1..7be6198 100644 (file)
--- a/jq/env.jq
+++ b/jq/env.jq
@@ -176,19 +176,7 @@ def env_req(env; key):
 def env_set(env; $key; $value):
     (if $value.kind == "function" or $value.kind == "atom" then
         # inform the function/atom of its names
-        $value | (.names += [$key]) | (.names |= unique) |
-        if $value.kind == "atom" then
-            # check if the one we have is newer
-            env_req(env; $key) as $ours |
-            if $ours.last_modified > $value.last_modified then
-                $ours
-            else
-                # update modification timestamp
-                $value | .last_modified |= now
-            end
-        else
-            .
-        end
+        $value | (.names += [$key]) | (.names |= unique)
     else 
         $value
     end) as $value | {
index f58e593..5a3076e 100644 (file)
@@ -115,7 +115,7 @@ def EVAL(env):
                                 ($value[2] | find_free_references($currentEnv | env_dump_keys + $binds)) as $free_referencess | {
                                     kind: "function",
                                     binds: $binds,
-                                    env: (env | env_remove_references($free_referencess)),
+                                    env: ($_menv | env_remove_references($free_referencess)),
                                     body: $value[2],
                                     names: [], # we can't do that circular reference thing
                                     free_referencess: $free_referencess  # for dynamically scoped variables
index 123f2cc..5e9e15a 100644 (file)
@@ -149,7 +149,7 @@ def EVAL(env):
                                 ($value[2] | find_free_references($currentEnv | env_dump_keys + $binds)) as $free_referencess | {
                                     kind: "function",
                                     binds: $binds,
-                                    env: (env | env_remove_references($free_referencess)),
+                                    env: ($_menv | env_remove_references($free_referencess)),
                                     body: $value[2],
                                     names: [], # we can't do that circular reference thing
                                     free_referencess: $free_referencess  # for dynamically scoped variables
index 46031c9..9af09fd 100644 (file)
@@ -241,7 +241,7 @@ def EVAL(env):
                                 ($value[2] | find_free_references($currentEnv | env_dump_keys + $binds)) as $free_referencess | {
                                     kind: "function",
                                     binds: $binds,
-                                    env: (env | env_remove_references($free_referencess)),
+                                    env: ($_menv | env_remove_references($free_referencess)),
                                     body: $value[2],
                                     names: [], # we can't do that circular reference thing
                                     free_referencess: $free_referencess,  # for dynamically scoped variables
index 6d1c509..a1b6657 100644 (file)
@@ -270,7 +270,7 @@ def EVAL(env):
                                 ($value[2] | find_free_references($currentEnv | env_dump_keys + $binds)) as $free_referencess | {
                                     kind: "function",
                                     binds: $binds,
-                                    env: (env | env_remove_references($free_referencess)),
+                                    env: ($_menv | env_remove_references($free_referencess)),
                                     body: $value[2],
                                     names: [], # we can't do that circular reference thing
                                     free_referencess: $free_referencess,  # for dynamically scoped variables
index c39c787..9f2793f 100644 (file)
@@ -276,7 +276,7 @@ def EVAL(env):
                                     ($value[2] | find_free_references($currentEnv | env_dump_keys + $binds)) as $free_referencess | {
                                         kind: "function",
                                         binds: $binds,
-                                        env: $_menv,
+                                        env: ($_menv | env_remove_references($free_referencess)),
                                         body: $value[2],
                                         names: [], # we can't do that circular reference thing
                                         free_referencess: $free_referencess,  # for dynamically scoped variables