summaryrefslogtreecommitdiff
path: root/coding-exercises/2/87.rkt
diff options
context:
space:
mode:
Diffstat (limited to 'coding-exercises/2/87.rkt')
-rw-r--r--coding-exercises/2/87.rkt42
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)
+
+
+