arity failures Thomas Bushnell BSG (13 Nov 2009 18:54 UTC)
|
Re: arity failures
David Van Horn
(13 Nov 2009 19:05 UTC)
|
Re: arity failures
Thomas Bushnell BSG
(13 Nov 2009 19:25 UTC)
|
Re: arity failures
Per Bothner
(13 Nov 2009 19:16 UTC)
|
Re: arity failures
Thomas Bushnell BSG
(13 Nov 2009 19:27 UTC)
|
Re: arity failures
Shiro Kawai
(13 Nov 2009 20:13 UTC)
|
arity failures Thomas Bushnell BSG 13 Nov 2009 18:54 UTC
So "passing" an arity check doesn't mean that the number of arguments you pass is correct, as Dybvig's already noted. Also, "failing" an arity check doesn't mean that you will get any kind of error or exception as a result. For example, in response to the question, "what is the arity of read", I said that under my proposal, (procedure-arity read) => 0, #t and then I gave code which throws an error if more than one argument is passed. But no error is required by Scheme, both because an implementation is free to assign a meaning to (read a b c), and further, because an implementation is free to assign a meaning in general to "extra arguments" passed to procedures. I can understand then "arity" to mean something which matches the syntax specification for lambda formals lists, in which there is a minimum and permission for more arguments. People seem to want some *other* meaning than that. Something like "the number of arguments that can be passed without signaling an error", though that's not a very clear concept without specifying which errors are involved. Moreover, for the reasons Dybvig has indicated previously, this is not something most systems could successfully implement, what with passing argument lists around via apply and such. So, to recap: Being told that a procedure takes, say, exactly three arguments, does not mean that 1) You won't get an error for passing three arguments; 2) You will get an error for passing other than three arguments. However, I believe it could mean that: * The procedure was created with a proper lambda formals list containing exactly three identifiers. Thomas