[racket] arity of + versus <=
"Joe Marshall picked the wrong way to generalize <=" is not a reason,
historical or otherwise, for <= not being generalized to 0 or 1
arguments.
Carl Eastlund
On Fri, Oct 28, 2011 at 1:01 PM, Joe Marshall <jmarshall at alum.mit.edu> wrote:
> To John:
> The original poster was asking why the comparison operators do not generalize
> downward to 1-ary and 0-ary versions. Upward generalization works.
>
> On Fri, Oct 28, 2011 at 9:31 AM, Arthur Nunes-Harwitt <anh at cs.rit.edu> wrote:
>> Hi,
>>
>> That's the wrong question.
>
> Well, sort of.
>
>> Recall that (= x1 x2 x3 ... xn) means
>> (x1 = x2) & (x2 = x3) & ... & (xn-1 = xn).
>
> Yes, but I was generalizing in a different way:
>
> (define (binary-add a b) (+ a b))
> (define (binary-multiply a b) (* a b))
>
> (define (binary->nary op base-case)
> (lambda args (fold-left op base-case args))) ; *****
>
> (define add (binary->nary binary-add 0))
> (define multiply (binary->nary binary-multiply 1))
>
> (The line with asterisks is because it is not specified whether OP is
> left-associative or right-associative. Fortunately, add and multiply work
> both ways.)
>
> --
> ~jrm