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