Re: Minor corrections on refs to LOOM

Tom Gruber <>
Message-id: <2854728715-155724@KSL-Mac-69>
Date: Mon, 18 Jun 90  13:11:55 PDT
From: Tom Gruber <>
Subject: Re: Minor corrections on refs to LOOM
In-Reply-To: Msg of Mon, 18 Jun 90 10:40:16 PDT from Robert MacGregor <>

Thanks for your corrections about LOOM.

>From: Robert MacGregor on Mon, 18 Jun 90 10:40:16 PDT

> Collectively, your "Guidelines" argue for many of the things that the
> FRAMES folks argue for, and that Genesereth argues against (e.g.,
> declaring classes before using them).  (Possibly Mike would favor them
> (the guidelines) for a language, but not for an interchange format; I
> couldn't say).  Since the Interlingua group is beginning to debate
> whether or not we should be designing a *language* (instead or in
> addition to the interchange format), it might be useful to us if at some
> point you could package up your guidelines and mail them to the group.

Yes, the process of building a KB motivates language features that are
not strictly needed for an interchange.  I am trying to get a handle on
the primitive that would give the right hook for stating metalevel
information.  Both KIF and Cyc have ways of doing it.  The KIF quote
operator is too low level for me.  Cyc is too promiscuous in that one
can have a hard time telling what that slotized whatchamagig is doing,
except to look at the code (and that's no fun).  The Derthick/Guha
proposal for the epistemological level looks good, but it is still a
mystery to me how to use it to say the right metalevel things in a
shareable way.  

What I think we need, although it isn't clear what it would take, is an
analog to a combination of Common Lisp's defmacro and declare.  It is
standard practice to use defmacro to write very high level languages in
CL, and they work pretty well for hiding ugly implementation details
that might declare types, inline functions, etc.  One can imagine
macroexpansion in KIF implementing the analog of "compiler transforms"
using quote.  The problem is that "compilation" isn't the same in
Lisp and logic.  Many of the declarations available in Common Lisp are
there specifically to support Lisp on stock hardware (without tags,
microcode typechecking, expensive funcall, etc).  Since we don't share a
model of the inference architecture -- which is the core motivation of
the interchange language approach -- then it's hard to know what
declarations are needed.  Hard, but maybe not impossible.  Let's see
what we can come up with for the Washington meeting.