hamscher@HT.AI.MIT.EDU.UUCP (10/27/87)
It seems to me that your list of reasons for using Lisp or Prolog in an AI class didn't include the single substantive reason for using Lisp, which is that that its use of just a couple of primitive data types to represent both data and code make it particularly easy to writing specialized languages and interpreters or compilers for them. Especially pattern-directed invocation languages. The reason for using Prolog is that it embeds one particular pattern-directed invocation paradigm for writing AI programs and makes that extremely fast, although clearly your experience with DCG notation suggests that it too has the unity of code and data that is helpful in constructing alternative interpreters. The reason it is important to be able to build specialized languages and interpreters is that those are what makes it possible to build specialized representations appropriate for different problems. And the engineering of appropriate representations is fundamental to AI. (which is not to claim that we know how to do it very well yet :-)