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

Re: Multiple values for R4RS.

>    If we decide to add "accepts?" to the language, we would have to say
>    that an implementation is free to return #t if it cannot determine
>    whether or not a given number of arguments is accepted by a given
>    procedure.  An implementation might even define "accepts?" as:
>       (lambda (procedure arity) #t)
>    This may seem to water down the predicate, but it only makes explicit
>    that which must already be true.
> Please explain in what cases you believe ACCEPTS? is inherently undecidable.
> The above message implies there are such cases, but they are not obvious to me.

It's all in how you define the technical term "accepts".  Does it mean
that the procedure won't signal an error if you pass it the given
number of arguments, or is it a superficial property the procedure
derived from the syntax of the lambda expression from which the
procedure was derived?  The latter isn't very interesting, since I can
fool it easily (see the examples in prior notes), and the former is
obviously undecidable.  If it is the latter, then in R4RS Scheme,
"accepts?" is decidable.  However, we would have to state in the report
that "accepts" doesn't really mean what it sounds like it means, since
the procedure may in reaility reject the given number of arguments.