[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


I have two answers to your first point about check-arg.

You say that "the user will have no idea how to enter a new value".  The
problem with this is your model of what a "user" is.  One of the main
users of Common Lisp is the program developer, who is writing the
program, and WILL know how to enter a new value.

You say that this is "an example of an error message I'd hate for a user
to see".  Well, suppose there is a data-type mismatch detected at
runtime.  Would you rather see this message, or have the program
continue to execute despite the mismatch and do something random, or
blow up, or say "please call an expert, you obviously can't understand
this", or what?

You want to put all your error messages in a big file of error messages.
Well, I think we simply have a difference of religion here.  I'd hate to
have to do that; if I did that, I'd never bother to take the trouble to
create good error messages, and my program would be incomprehensible
because when you read the program you wouldn't be able to see the error
messages.  How many users really would want to edit this file?  What would
they edit?  And if you want to make an application multilingual, it's
a lot harder than just replacing the error messages: what about all
the prompts and so on?

For assert, your only new objection ends with "I challenge anyone to do
this in a stylish fashion."  Well, I have a great deal of experience
with advanced error systems, and we have had a lot of success in this
area.  Challenge accepted.  When you get your first official release
of Symbolics Common Lisp, try it.

Besides, if you want to make up your own message, well, don't use
e(c)case.  Those functions exist for the convenience of those who don't
want to spend a lot of effort optimizing theis messages.

I think you might have a valid point about the interaction between
the explicit type checking, and implicit type checking that might
be generated because of declarations.  If I had an "Excelsior edition"
(so that's what it's called!), I could look into this further.