“…A similar idea is the reflective tower, which uses an infinite tower of self-interpreters to add reflective capabilities to a language. There are many examples of self-interpreters in the literature, including ones for λ-calculus [4,7,8,18,22,23,28,31], Haskell [25], JavaScript [13], Lisp [21], Python [36], Ruby [37], Scheme [2], Standard ML [29], and many others [19,32,38]. In each of these the representations are untyped, in the sense that (1) it is possible to build representations of ill-typed terms, and (2) all representations are either untyped or else have the same type.…”