Next: , Previous: Recursion, Up: Recursion


2.7.9.1 Recur

A generalization of the form denoted by meta in silly is recognized by the virtual machine and allows a slightly more efficient encoding of recursive applications. An expression recur p has the representation indicated by this theorem,

T15
[[recur]] p = (((nil,p),nil),nil)

which implies that [[meta]] = [[recur]] (nil,nil).

If p is non-nil, a tree of the form [[recur]] p is interpreted as follows. Note that P4 is equivalent to the special case of this property for which p is (nil,nil).

P14
([[recur]] p) x = [[meta]] ([[field]] p) x

The rationale is that meta would very frequently be composed with a deconstruction field p, so the virtual machine saves some time and space by allowing the two of them to be encoded in a smaller tree with the combined meaning.