From: David Gudeman
Subject: Re: Correctness (was Re: Common Lisp lacks portability)
Date: 
Message-ID: <3247@megaron.arizona.edu>
In article  <····@orstcs.CS.ORST.EDU> ········@orstcs.CS.ORST.EDU (Ritchey Ruff) writes:
>I think I see the basic point of dissent in this discussion...
>
>The main difference in opinion seems to be what we "feel" the definition
>of "A CORRECT PROGRAM" is, right?

No, I don't think you get it.  You are trying to use type declarations
to make the run-time system verify the types of variables.  You are
using them incorrectly.  Type declarations in Common Lisp have no
purpose other than to give the compiler information that helps it
produce efficient code.  That's why the compiler is free to ignore the
declarations.

Some implementations may use the declarations to help the programmer
find bugs, but this is not part of the language.  So if you depend on
type declarations to check the types of your variables at run time,
you are using a non-standard, non-portable feature of a specific
implementation.
From: Ritchey Ruff
Subject: Re: Correctness (I see I'm wrong...)
Date: 
Message-ID: <1596@orstcs.CS.ORST.EDU>
First I want to clear up that the program segment was more like -

(defun foo(n)
  (declare (integer n))
  (integer-only-function (the integer n)))

Silly me.  I saw that "the" assures that its value is of the
type stated, but failed to note that it is simply a "declaration"
for unnamed forms.  In this vain I'm wrong (20 lashes with a gc'ed
cons cell).  I still have a gripe but will let this dead horses die...

sigh...shows what happens what an Interlisp hacker tries to move
to Common Lisp ( 8-0 "oh, no!" ;-).

--ritchey ruff