# Recur - avram - a virtual machine code interpreter
avram - a virtual machine code interpreter

##### 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.