summaryrefslogtreecommitdiffstats
path: root/final_project/work/discovery-examples.scm
diff options
context:
space:
mode:
Diffstat (limited to 'final_project/work/discovery-examples.scm')
-rw-r--r--final_project/work/discovery-examples.scm100
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)
+
+