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.)