Re: Scheme/Prolog IF source?


2 Dec 1995 21:25:54 GMT

In article <49q6cu$6vh@hermes.oc.com>,
Allen Garvin <earendil@localhost.uucp> wrote:
>In article <49kgcb$7ok@news.ycc.yale.edu>,
>Ronald Legere <legere@minerva.cis.yale.edu> wrote:
>> I am hoping someone knows of any IF that was coded
>>in Prolog or Scheme... It seems that these languages
>>would be well suited (as IF has some things in common with
>>AI ... ) for this.

Well, IF does have some things in common with AI, and at least two of
the sub-problems of IF (those of creating credible NPC's and of
understanding the user's intentios from his/her input) *are* AI
problems. On the other hand, some aspects of IF don't have very much
at all to do with AI.

Several people have stated that it's "obvious" that Prolog or Lisp
would be the natural choice for writing IF. These people have not, as
far as I know, ever written a full-sized adventure. Maybe they're
right in their conjecture, and maybe not.

Personally, I'd like to have a language like Lisp or Prolog for *one*
subproblem: that of coding routines to handle "Ask the troll about the
wizard" or "Troll, tell me all you know about wizard". For most other
tasks, the Smalltalk-like structure of TADS seems better suited.

>> Any work on a scheme-like or functional IF language?
>>Or am I a raving lunatic ? :)

Not at all. I think the reason neither TADS nor Inform is a functional
language is that their authors had more experience with procedural and
traditional OO languages.

>
> About three years ago in Dr. Dobbs I read about a language called DROOL
> (Dave's Recycled Object-Oriented Language) that the author of one of
> the popular lisps (xlisp or franz lisp...?) wrote. He was also the
> author of a previous adventure game construction language, which with
> my poor memory I can't remember.

That would be Dave Betz, if I'm not mistaken, the author of XLisp and
Advsys. Advsys was perhaps the first full-fledged adventure
programming language: an object-oriented Lisp dialect with specail
primitives for IF, a built-in natural language parser and a library of
IF objects.

Unfortunately, Advsys is a bit too inflexible; I gave it up after I
found it impossible to get sensible responses in some cases. One
irritating thing I remember was something like this:

> Troll, go west and take key
You can't take the key.

when it was the *troll* and not me who couldn't take the key. This
beahaviour was in the run-time system, which is written in C, and not
in the Advsys library, and I found it beyond my (at the time modest)
knowledge of C to fix it.

Magnus