Path: utzoo!attcan!uunet!seismo!sundc!pitstop!sun!decwrl!labrea!rutgers!mailrus!tut.cis.ohio-state.edu!bloom-beacon!mit-eddie!fenchurch!jbs From: jbs@fenchurch.mit.edu (Jeff Siegal) Newsgroups: comp.lang.scheme Subject: Re: Why does (eq? car car) ==> () in MacScheme? Message-ID: <10634@eddie.MIT.EDU> Date: 10 Dec 88 21:23:04 GMT References: <1440@uw-nsr.UUCP> Sender: uucp@eddie.MIT.EDU Reply-To: jbs@fenchurch.UUCP (Jeff Siegal) Organization: MIT, EE/CS Computer Facilities, Cambridge, MA Lines: 17 In article <1440@uw-nsr.UUCP> john@nsr.bioeng.washington.edu (John Sambrook 548-4386) writes: >[...]in MacScheme >it is the case that (eq? car car) ==> (). [...] >Could someone please explain what's going on here? I can guess at the following explanation: In MacScheme, Scheme primitives are not really procedures, but when you reference them, the compiler generates a procedure "wrapper" (i.e. "car" becomes "(lambda (l) (car l))" It does this each time the primitive is used as a value (so each "car" refers to a different wrapper procedure). This behavior is wrong according to R3RS (3/4 of the way into Sect 6.2) Jeff Siegal