Path: utzoo!utgpu!water!watmath!clyde!bellcore!faline!thumper!ulysses!andante!princeton!udel!rochester!cornell!uw-beaver!teknowledge-vaxc!sri-unix!quintus!ok From: ok@quintus.UUCP Newsgroups: comp.lang.prolog Subject: Re: Atom-based module systems Message-ID: <963@cresswell.quintus.UUCP> Date: 13 May 88 01:53:44 GMT References: <136@vor.esosun.UUCP> <841@cresswell.quintus.UUCP> <365@aiva.ed.ac.uk> <531@ecrcvax.UUCP> Organization: Quintus Computer Systems, Mountain View, CA Lines: 23 Posted: Thu May 12 21:53:44 1988 In article <531@ecrcvax.UUCP>, micha@ecrcvax.UUCP (Micha Meier) writes: > In article <943@cresswell.quintus.UUCP> ok@quintus.UUCP (Richard A. O'Keefe) writes: > I don't know what is the current_op/3 table and how does the read/1 > predicate access it, but in any case even in Prolog, there is > more information one might want to associate with a functor: > counters, recorded terms, arrays (except for recorded terms > extended data types, but they *are* used). Apart from that, > there are Prolog extensions that might want to associate even > more information with a functor. In SEPIA, we have introduced > property lists exactly because of this. > > --Micha The current_op/3 table is the built-in predicate current_op/3, what else? The point is that information about atoms and functors is held in predicates. Property lists in Lisp are something of a disaster (you cannot use properties freely, but have to check that the system isn't using the name you have in mind; I have been burned by this) and hash tables in Common Lisp provide a *much* better approach. Using predicates in Prolog is the analogue of using hash tables in Common Lisp. Using predicates, you can associate arbitrary chunks of information *without* complicating the implementation of atoms and functors, and you have to support predicates anyway!