Add add3 operation

This is to test coercion of >2 arguments.
This commit is contained in:
Oliver Payne 2022-02-09 20:59:10 +00:00
parent 89a52bb489
commit b8981693d2
1 changed files with 6 additions and 0 deletions

View File

@ -101,6 +101,8 @@
(define (exp x y) (apply-generic 'exp x y))
(put 'add '(scheme-number scheme-number)
(lambda (x y) (tag (+ x y))))
(put 'add3 '(scheme-number scheme-number scheme-number)
(lambda (x y z) (tag (+ x y z))))
(put 'sub '(scheme-number scheme-number)
(lambda (x y) (tag (- x y))))
(put 'mul '(scheme-number scheme-number)
@ -146,6 +148,8 @@
(define (tag x) (attach-tag 'rational x))
(put 'add '(rational rational)
(lambda (x y) (tag (add-rat x y))))
(put 'add3 '(rational rational rational)
(lambda (x y z) (tag (add-rat x (add-rat y z)))))
(put 'sub '(rational rational)
(lambda (x y) (tag (sub-rat x y))))
(put 'mul '(rational rational)
@ -240,6 +244,8 @@
(define (tag z) (attach-tag 'complex z))
(put 'add '(complex complex)
(lambda (z1 z2) (tag (add-complex z1 z2))))
(put 'add3 '(complex complex complex)
(lambda (z1 z2 z3) (tag (add-complex z1 (add-complex z2 z3)))))
(put 'sub '(complex complex)
(lambda (z1 z2) (tag (sub-complex z1 z2))))
(put 'mul '(complex complex)