[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: transitivity does not imply type-checking
Matthias Radestock wrote:
Jens Axel Søgaard <jensaxel@xxxxxxxxxxxx> writes:
I was just saying *if* you make that interpretation, you need to
type check all arguments.
Apologies for harping on about this, but my initial post contained a
counter-example: an implementation of = that meets the criteria of your
interpretation, yet does not type-check all args.
Sorry - I misread your post - I thought the example was meant to
show, that type checking wasn't neccessary in R5RS.
Your example was:
(define (= x y . rest)
(and (number? x) (number? y)
(prim= x y)
(or (null? rest) (apply my= y rest))))
Hmm - just returning #f, in error situations does indeed make
It does lead to strange behaviour. Even though
(< 1 'a) => #f
(> 1 'a) => #f
we get that
(= 1 'a) => #f .
I'd prefer as many errors to be signaled as possible, but I guess that's
a matter of taste.
What's your view?
> That is fine by me, but it is not the rationale given by the srfi
> document, which instead claims that type-checking of all args is
> by the R5RS requirement for transitivity. The point of this thread was
> to ascertain whether the latter is actually the case. It isn't.
Yes - the wording could have been better.
Jens Axel Søgaard