Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!linus!philabs!seismo!hao!hplabs!sri-unix!U-Reddy@UTAH-20 From: U-Reddy%UTAH-20@sri-unix.UUCP Newsgroups: net.lang.prolog Subject: More on Referential Transparency of =.. Message-ID: <13479@sri-arpa.UUCP> Date: Mon, 7-Nov-83 17:48:01 EST Article-I.D.: sri-arpa.13479 Posted: Mon Nov 7 17:48:01 1983 Date-Received: Sat, 12-Nov-83 06:58:34 EST Lines: 25 From: Uday Reddy Re: Pereira, Referential Transparency, PROLOG Digest V1 #49 (11.7.83) Fernando Pereira states that =.. is referentially transparent because the function symbols in Prolog are uninterpreted. This argument is valid provided =.. is used only with terms constructed by function symbols, not predicate symbols. If p is a predicate symbol, then p(A) =.. X is not referentially transparent. Since this condition is not adhered to in Prolog, Pereira's argument merely transfers the blemish from =.. to call. Provided =.. is used in a referentially transparent way, is it first-order or second-order ? The answer is naturally that it is second-order, because one of its arguments contains a function. Incidentally, I don't see why "is" is referentially opaque. One can extend the semantics to include integers, interpreting "is" as a relation mapping Herbrand terms to integers. -- Uday Reddy