Abstract
Programming languages which are capable of interpreting themselves have been fascinating computer scientists. Indeed, if this is possible then a ‘strange loop’ (in the sense of Hofstadter, 1979) is involved. Nevertheless, the phenomenon is a direct consequence of the existence of universal languages. Indeed, if all computable functions can be captured by a language, then so can the particular job of interpreting the code of a program of that language. Self-interpretation will be shown here to be possible in lambda calculus.The set of λ-terms, notation Λ, is defined by the following abstract syntaxwhereis the set {v, v′, v″, v′″,…} of variables. Arbitrary variables are usually denoted by x, y,z,… and λ-terms by M,N,L,…. A redex is a λ-term of the formthat is, the result of substituting N for (the free occurrences of) x in M. Stylistically, it can be said that λ-terms represent functional programs including their input. A reduction machine executes such terms by trying to reduce them to normal form; that is, redexes are continuously replaced by their contracta until hopefully no more redexes are present. If such a normal form can be reached, then this is the output of the functional program; otherwise, the program diverges.
Publisher
Cambridge University Press (CUP)
Cited by
22 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Intensional computation with higher-order functions;Theoretical Computer Science;2019-05
2. A simpler lambda calculus;Proceedings of the 2019 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation - PEPM 2019;2019
3. Self-Quotation in a Typed, Intensional Lambda-Calculus;Electronic Notes in Theoretical Computer Science;2018-04
4. Recursive programs in normal form (short paper);Proceedings of the ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation;2017-12-25
5. On the Semantics of Intensionality;Lecture Notes in Computer Science;2017