Xref: utzoo comp.lang.misc:1990 comp.lang.lisp:1157 Path: utzoo!utgpu!water!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!bloom-beacon!apple!bionet!agate!labrea!decwrl!sun!pitstop!sundc!seismo!uunet!mcvax!ukc!eagle.ukc.ac.uk!icdoc!qmc-cs!harlqn!jcgs From: jcgs@harlqn.UUCP (John Sturdy) Newsgroups: comp.lang.misc,comp.lang.lisp Subject: Re: reflexivity Keywords: reflexivity,meta-circularity Message-ID: <1279@harlqn.UUCP> Date: 12 Oct 88 10:55:16 GMT References: <612@crin.crin.fr> <826@etive.ed.ac.uk> Reply-To: jcgs@uk.co.harlqn (John Sturdy) Organization: Harlequin (Cambridge, UK) Ltd. Lines: 21 In article <826@etive.ed.ac.uk> sean@lfcs.ed.ac.uk (Sean Matthews (AI)) writes: >In article <612@crin.crin.fr> napoli@crin.crin.fr (Amedeo NAPOLI) writes: >>Does anybody have clear definition of the following terms: >>- meta-circularity, reflexivity, self-reflexivity > >reflection is where a programming language has access to its own interpreter, >and can modify it. Or a finer distinction: Reflection is where a program can modify its own text, and modify its "internal" state, as ordinary data objects Reification is where it can access (read) its text and state Tower reflection and reification are where it can access its interpreter's text and state (and its interpreter's interpreter's text and....) To take examples from "ordinary" programming languages: setjmp in the C/un*x library is a reifier, and longjmp is the corresponding reflector. They move information between the "interpreter state" (CPU stack and PC registers in this case) and the program's data space. The "varargs" mechanism is just about a reflective device, too. __John (jcgs@uk.co.harlqn)