diff options
Diffstat (limited to 'coding-exercises/2/87.rkt')
| -rw-r--r-- | coding-exercises/2/87.rkt | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/coding-exercises/2/87.rkt b/coding-exercises/2/87.rkt index cda82ce..6c2a3f6 100644 --- a/coding-exercises/2/87.rkt +++ b/coding-exercises/2/87.rkt @@ -1,2 +1,44 @@ #lang racket +(require "./83/install.rkt") +;; arithmetic package +(define get-put-apply (install-arithmetic-package)) +(define get (car get-put-apply)) +(define put (cadr get-put-apply)) +(define apply-fn (caddr get-put-apply)) + +(define (install-polynomial-package put) + ;; internal procedures + (define (tagme p) + (attach-tag 'polynomial p)) + ;;repr + (define (make-poly variable term-list) + (cons variable term-list)) + (define (variable p) (car p)) + (define (term-list p) (cdr p)) + ;; preds + (define (variable? x) (symbol? x)) + (define (same-variable? x y) (and (variable? x) (variable? y) (eq? x y))) + ;; term list + (define (adjoin-term term-list term) + '()) + (define (coeff term) + '()) + ;; ops + (define (add-poly p1 p2) + (if (same-variable? (variable p1) (variable p2)) + (make-poly (variable p1) + (add-terms (term-list p1) + (term-list p2))) + (error "Polys not in same var -- ADD-POLY" (list p1 p2)))) + (define (mul-poly p1 p2) + (if (same-variable? (variable p1) + (variable p2)) + (make-poly (variable p1) + (mul-terms (term-list p1) + (term-list p2))) + (error "Polys not in same var -- MUL-POLY" (list p1 p2))))) + ;; interface) + + + |
