[comp.lang.lisp] INSIST Macro

waander@flubber.cs.umd.edu (Bill Andersen) (06/29/91)

  I noticed the INSIST macro in your SYMCAT code.  Why use this when
you can just use CL's ASSERT?  The function of ASSERT is to allow
programmers to insert arbitrary tests into their functions to guard
against bad arguments, etc.  I pointed this out to another UChicago
person and he agreed with me.  This macro is all over the place in
Schank & Riesbeck's "Inside Case Based Reasoning" so I assume that's
how it migrated to UChicago (via Hammond & others).

--
    Bill Andersen (waander@cs.umd.edu) |
    University of Maryland             | clever .signature saying
    Department of Computer Science     | under construction
    College Park, Maryland  20742      |

mitchell@tartarus.uchicago.edu (Mitchell Marks) (06/30/91)

>>>>> "ba" == Bill Andersen <waander@flubber.cs.umd.edu> writes:


  ba>   I noticed the INSIST macro in your SYMCAT code.  Why use this
  ba> when you can just use CL's ASSERT?

For thoroughly uninteresting personal/historical reasons: at the time,
I wasn't aware of ASSERT, and had recently come across INSIST and was
using it everywhere for about a week.

  ba> The function of ASSERT is to allow programmers to insert
  ba> arbitrary tests into their functions to guard against bad
  ba> arguments, etc.  I pointed this out to another UChicago person
  ba> and he agreed with me.

And so do I, mostly.  ASSERT certainly provides *more* functionality.
There are also nice aspects to INSIST that ASSERT misses on, though
not enough to make me prefer INSIST overall, now that I've learned
about ASSERT -- on those occasions where something of that sort is
desirable at all.  (There was really no need for either in the code I
posted, it was just a relic of that moment when I had INSIST in my
head.)  And in any case, sticking to something that's already standard
in the language is in general a winner, right?

  ba> This macro is all over the place in Schank & Riesbeck's "Inside
  ba> Case Based Reasoning" so I assume that's how it migrated to
  ba> UChicago (via Hammond & others).

Ja... Und?

While we're on the subject, I also noticed too late (*sigh*) that
there was another non-standard macro, FOR, in the SYMCAT code I
posted.  Sorry, everybody.  It could easily be replaced by a standard
mapping or iteration construct.

--
Mitch Marks    mitchell@cs.UChicago.EDU
"Oh God comma I abhor self-consciousness" --John Barth