Newsgroups: comp.lang.lisp
Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!think.com!linus!linus!clouseau!john
From: john@clouseau.mitre.org (John D. Burger)
Subject: Re: string to symbol conversion
Message-ID: <1991Jun25.195024.2977@linus.mitre.org>
Sender: news@linus.mitre.org (News Service)
Nntp-Posting-Host: clouseau.mitre.org
Organization: The MITRE Corporation, Bedford, MA 01730
Date: Tue, 25 Jun 1991 19:50:24 GMT
Lines: 32

mitchell@tartarus.uchicago.edu writes:

  [Code to concatenate strings and symbols deleted]

As far as I can tell, the functionality of your INSIST macro is implemented by
a CommonLisp built-in, ASSERT.  The ASSERT macro also has some other nice
features, in that it allows you to specify some SETF places for its second
argument, e.g.

  (defun feed-horse (horse barn)
    (assert (horse-in-barn horse barn)
            ((barn-door-closed? barn)
             ;; More SETF places go here ...
             )
            "The horse has escaped!")
    ;; Code to actually feed horse goes here ...
    )

The debugger then presents these to the user so she can try to recover when
the assertion fails.  Thus:

  (feed-horse *trigger* *empty-barn*)

  ERROR: The horse has escaped!
  Options:
    A: Specify a new value for (BARN-DOOR-CLOSED? BARN)
    B: Exit to top level
--
John Burger                                               john@mitre.org

"You ever think about .signature files? I mean, do we really need them?"
  - alt.andy.rooney
