Fix n vs n-1 mistake
This commit is contained in:
parent
419ab937b6
commit
df051fd643
|
@ -334,10 +334,10 @@ code for the global function:
|
||||||
|
|
||||||
{{< gmachine "Unwind-Global" >}}
|
{{< gmachine "Unwind-Global" >}}
|
||||||
{{< gmachine_inner "Before">}}
|
{{< gmachine_inner "Before">}}
|
||||||
\( \text{Unwind} : i \quad a, a_0, a_1, ..., a_n : s \quad d \quad h[\substack{a : \text{NGlobal} \; n \; c \\ a_k : \text{NApp} \; a_{k-1} \; a_k'}] \quad m \)
|
\( \text{Unwind} : i \quad a, a_0, a_1, ..., a_{n-1} : s \quad d \quad h[\substack{a : \text{NGlobal} \; n \; c \\ a_k : \text{NApp} \; a_{k-1} \; a_k'}] \quad m \)
|
||||||
{{< /gmachine_inner >}}
|
{{< /gmachine_inner >}}
|
||||||
{{< gmachine_inner "After" >}}
|
{{< gmachine_inner "After" >}}
|
||||||
\( c \quad a_0', a_1', ..., a_n', a_n : s \quad d \quad h[\substack{a : \text{NGlobal} \; n \; c \\ a_k : \text{NApp} \; a_{k-1} \; a_k'}] \quad m \)
|
\( c \quad a_0', a_1', ..., a_{n-1}', a_{n-1} : s \quad d \quad h[\substack{a : \text{NGlobal} \; n \; c \\ a_k : \text{NApp} \; a_{k-1} \; a_k'}] \quad m \)
|
||||||
{{< /gmachine_inner >}}
|
{{< /gmachine_inner >}}
|
||||||
{{< gmachine_inner "Description" >}}
|
{{< gmachine_inner "Description" >}}
|
||||||
Call a global function.
|
Call a global function.
|
||||||
|
@ -345,12 +345,12 @@ code for the global function:
|
||||||
{{< /gmachine >}}
|
{{< /gmachine >}}
|
||||||
|
|
||||||
In this rule, we used a general rule for \\(a\_k\\), in which \\(k\\) is any number
|
In this rule, we used a general rule for \\(a\_k\\), in which \\(k\\) is any number
|
||||||
between 0 and \\(n\\). We also expect the `NGlobal` node to contain two parameters,
|
between 1 and \\(n-1\\). We also expect the `NGlobal` node to contain two parameters,
|
||||||
\\(n\\) and \\(c\\). \\(n\\) is the arity of the function (the number of arguments
|
\\(n\\) and \\(c\\). \\(n\\) is the arity of the function (the number of arguments
|
||||||
it expects), and \\(c\\) are the instructions to construct the function's tree.
|
it expects), and \\(c\\) are the instructions to construct the function's tree.
|
||||||
|
|
||||||
The attentive reader will have noticed a catch: we kept \\(a\_n\\) on the stack!
|
The attentive reader will have noticed a catch: we kept \\(a\_{n-1}\\) on the stack!
|
||||||
This once again goes back to replacing a node in-place. \\(a\_n\\) is the address of the "root" of the
|
This once again goes back to replacing a node in-place. \\(a\_{n-1}\\) is the address of the "root" of the
|
||||||
whole expression we're simplifying. Thus, to replace the value at this address, we need to keep
|
whole expression we're simplifying. Thus, to replace the value at this address, we need to keep
|
||||||
the address until we have something to replace it with.
|
the address until we have something to replace it with.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user