Path: utzoo!utgpu!water!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!mailrus!cornell!uw-beaver!teknowledge-vaxc!sri-unix!quintus!ok From: ok@quintus.uucp (Richard A. O'Keefe) Newsgroups: comp.lang.misc Subject: Re: Unification of Paradigms Message-ID: <451@quintus.UUCP> Date: 20 Sep 88 23:59:31 GMT References: <3923@okstate.UUCP> Sender: news@quintus.UUCP Reply-To: ok@quintus.UUCP (Richard A. O'Keefe) Organization: Quintus Computer Systems, Inc. Lines: 31 In article <3923@okstate.UUCP> norman@a.cs.okstate.edu (Norman Graham) writes: >Has anyone out there tried to derive a set of concepts that would >allow the unification of procedural, object, functional, and logic >languages? I don't know what PopLog does about objects, but it has been integrating imperative (Pop), functional (Lisp, ML), and logic (Prolog) programming for quite some time. Lisp itself (if we take this to mean Common Lisp + CLOS) integrates imperative, functional, and object-oriented programming rather smoothly. >Logic languages only seem to provide syntatic sugar >for a handful of functions easily written in the above language. >|-: Don't flame me for that last statement. Why not? If you know that you don't know much about a subject, why pontificate about it? If Graham's exposure to logic programming has been to Turbo Prolog, then he has some excuse. There are operations which can be done in O(N) time in a logic programming language which require O(N.lgN) time in a pure functional language, thanks to the logical variable (basically, information can be propagated instantaneously throughout an arbitrarily large data structure, just as by conventional assignment). Logic programming languages (and the special case, functional languages) can express *inheritence* quite easily; where they part company with object-oriented languages is that they cannot handle the notion of an *object* having an identity which is distinct from its state. (There is an object-oriented style used in Concurrent Prolog, but the "objects" are abstractions of states of processes, having existence only in the programmer's mind. Programs manipulate message streams.)