diff options
author | bnewbold <bnewbold@eta.mit.edu> | 2009-05-08 07:38:15 -0400 |
---|---|---|
committer | bnewbold <bnewbold@eta.mit.edu> | 2009-05-08 07:38:15 -0400 |
commit | c02dece30f877532eb9b7883730edbc9f1cdd362 (patch) | |
tree | fe02619641a4c8eee24af1614e6596a292d54d24 /final_project/work/discovery-examples.scm | |
parent | ef5c9707e8abda96324f70d2e767f5c330854f32 (diff) | |
download | 6.945-c02dece30f877532eb9b7883730edbc9f1cdd362.tar.gz 6.945-c02dece30f877532eb9b7883730edbc9f1cdd362.zip |
split out examples
Diffstat (limited to 'final_project/work/discovery-examples.scm')
-rw-r--r-- | final_project/work/discovery-examples.scm | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/final_project/work/discovery-examples.scm b/final_project/work/discovery-examples.scm new file mode 100644 index 0000000..45ae2ea --- /dev/null +++ b/final_project/work/discovery-examples.scm @@ -0,0 +1,100 @@ + +(load "ghelper") +(load "discovery") + +(define inverse + (make-generic-operator 1 #f 'inverse)) +(define plus + (make-generic-operator 2 #f 'plus)) +(define minus + (make-generic-operator 2 #f 'minus)) + +(assign-operation inverse + (lambda (x) (/ 1 x)) + (lambda (x) (and (number? x) + (not (integer? x))))) + +; actually a transpose, but meh +(assign-operation inverse + (lambda (x) (apply zip x)) + (lambda (x) + (and (list? x) + (for-all? x list?)))) + +(define any? (lambda (x) #t)) +(assign-operation minus - any? any?) +(assign-operation plus + any? any?) + +(plus 1 2) +; 3 + +;(minus 3) +; ERROR + +(inverse 6.5) +;Value: .15384615384615385 + +(discover:opers-for 6.5) +;Value 57: (#[compound-procedure 38 operator] thingaling) + +(discover:named-opers-for 6.5) +;Value 58: (thingaling) + +(discover:named-opers-for 1 2) +;Value 81: (plus minus) + +;;; this stuff is just play crap + +(car (hash-table->alist *generic-operator-table*)) + +(caadr (hash-table/get *generic-operator-table* inverse #f)) + +(environment-bound-names (the-environment)) + +(environment-lookup (the-environment) 'inverse) + + +(inverse '( (1 2 3) + (0 1 2) + (0 0 1))) + +(hash-table/get *generic-operator-table* inverse #f) +(hash-table/get *generic-operator-table* minus #f) + +(hash-table-size *generic-operator-table*) +;Value: 92 ;this is for mechanics + +;this prints all keys line by line +(for-each + (lambda (x) (newline) + (display x)) + (hash-table/key-list *generic-operator-table*)) + + +(define add1 (make-generic-operator 1 #f 'add1)) +(define sub1 (make-generic-operator 1 #f 'sub1)) +(define double (make-generic-operator 1 #f 'double)) +(define square (make-generic-operator 1 #f 'square)) +(define inverse (make-generic-operator 1 #f 'inverse)) +(defhandler add1 (lambda (x) (+ x 1)) number?) +(defhandler sub1 (lambda (x) (- x 1)) number?) +(defhandler double (lambda (x) (* 2 x)) number?) +(defhandler square (lambda (x) (* x x)) number?) +(defhandler inverse (lambda (x) (/ 1 x)) (lambda (n) + (and (number? n) + (not (zero? n))))) + +(add1 4) +;(sub1 'b) + +(discover:apply-all 3) + +(discover:satisfy (lambda (x) (eq? x 9)) (/ 1 2)) +(discover:satisfy-sequence (lambda (x) (eq? x 9)) (/ 1 2)) +(discover:satisfy-sequence (lambda (x) (eq? x 49)) (/ 5 6)) + +(square (sqrt 2)) +(sqrt 2) +(square 3) + + |