aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2021-03-21 20:20:07 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2021-03-21 20:20:07 -0400
commitbe057fcd9a82f6e82ad31ba70358c8318ad81fe5 (patch)
treed5b24f51eb8fd4822243ef2152fa9ea4f52b6104
parentf3fcc2928931c8ec0ca0770f71c52f5567390b10 (diff)
Add •ScopedEval
-rw-r--r--docs/spec/system.html5
-rw-r--r--spec/system.md13
2 files changed, 13 insertions, 5 deletions
diff --git a/docs/spec/system.html b/docs/spec/system.html
index 4a028f92..255265f4 100644
--- a/docs/spec/system.html
+++ b/docs/spec/system.html
@@ -88,12 +88,17 @@
<td>Evaluate the argument string in the current scope</td>
</tr>
<tr>
+<td><code><span class='Function'>•ScopedEval</span></code></td>
+<td>Evaluate the argument string in a scope</td>
+</tr>
+<tr>
<td><code><span class='Function'>•Using</span></code></td>
<td>Import all values from the argument namespace</td>
</tr>
</tbody>
</table>
<p>The effect of <code><span class='Function'>•Eval</span></code> should be the same as if its argument were written as source code in the scope where <code><span class='Function'>•Eval</span></code> appears. It can define variables, and modify those in the current scope or a parent.</p>
+<p><code><span class='Function'>•ScopedEval</span></code> creates as new scope for evaluation as it is loaded. Other than its syntactic role, it is effectively equivalent to <code><span class='Brace'>{</span><span class='Function'>•Eval</span><span class='Brace'>}</span></code>.</p>
<h2 id="input-and-output">Input and output</h2>
<table>
<thead>
diff --git a/spec/system.md b/spec/system.md
index 47c68445..c08ab9af 100644
--- a/spec/system.md
+++ b/spec/system.md
@@ -45,14 +45,17 @@ Functions `•FChars`, `•FLines`, and `•FBytes` are all ambivalent. If only
## Execution and scope manipulation
-| Name | Summary
-|------------|--------------------------
-| `•BQN` | Evaluate the argument string in an isolated scope
-| `•Eval` | Evaluate the argument string in the current scope
-| `•Using` | Import all values from the argument namespace
+| Name | Summary
+|---------------|--------------------------
+| `•BQN` | Evaluate the argument string in an isolated scope
+| `•Eval` | Evaluate the argument string in the current scope
+| `•ScopedEval` | Evaluate the argument string in a scope
+| `•Using` | Import all values from the argument namespace
The effect of `•Eval` should be the same as if its argument were written as source code in the scope where `•Eval` appears. It can define variables, and modify those in the current scope or a parent.
+`•ScopedEval` creates as new scope for evaluation as it is loaded. Other than its syntactic role, it is effectively equivalent to `{•Eval}`.
+
## Input and output
| Name | Summary