[comp.lang.prolog] WAM Tutorial

hassan@prl.dec.com (Hassan Ait-Kaci) (07/18/90)

It has recently dawned on me that some people participating in this
forum might be interested in a report that I wrote a few months ago
whose purpose is a systematic and complete tutorial reconstruction of
the WAM. So far, the few that have read it and commented on it have not
been so negative, so I've been led to presume that it may have some
genuine qualities. Anyway, the report is available free of (even
mailing) charge upon simple request by postal or electronic mail, or
even telephone, addressed to:

	The Librarian
	Digital Equipment Corporation
	Paris Research Laboratory
	85, avenue Victor Hugo
	92563 Rueil-Malmaison Cedex
	France

	+33/ (1) 47 14 28 79

	librarian@prl.dec.com
	
Mention your name, your postal address, and the report's author, title
and number. Here's the reference:

	Hassan Ait-Kaci
	The WAM: A (Real) Tutorial
	PRL Research Report No.5

Here's the abstract:


	As its title indicates, this document is a new attempt to
	explicate the underpinnings of the compilation techniques
	and concomitant abstract architecture for Prolog due to
	David H.D.  Warren---the Warren Abstract Machine (WAM). It
	is done in a style particularly suited for those left
	puzzled and frustrated by the few existing writings on the
	subject.  In these, typically, all of the WAM's
	intricacies are presented at once, at the risk of
	overloading the reader with multiple design details which
	can only be justified and understood after the global
	picture has been digested.  Unfortunately, many experience
	indigestion early in the process and give up. This is
	quite deplorable since the WAM is admirably conceived,
	introducing hitherto unknown techniques for compiling and
	optimizing symbolic computing and which can generalize
	beyond Prolog.  Yet, the WAM is in truth quite easy to
	understand.  One must simply realize that it is the end
	result of many optimizations, some subtly interdependent.
	Thus, we labor here to untangle this Gordian knot without
	cutting it through.  Starting from very simple independent
	pieces of Prolog, we reconstruct the WAM, spelling out
	each design decision as a means to improve performance.
	Although this exercise is, in our opinion, quite justified
	as an altruistic endeavor, it may also hopefully
	contribute to making WAM technology a little more fit for
	use in other symbolic programming calculi sharing some, if
	not all, of Prolog features.

Enjoy...

-hak