summaryrefslogtreecommitdiffstats
path: root/final_project
diff options
context:
space:
mode:
Diffstat (limited to 'final_project')
-rw-r--r--final_project/work/description26
-rw-r--r--final_project/work/examples.scm29
2 files changed, 55 insertions, 0 deletions
diff --git a/final_project/work/description b/final_project/work/description
new file mode 100644
index 0000000..64b6574
--- /dev/null
+++ b/final_project/work/description
@@ -0,0 +1,26 @@
+
+A generic operator system connects the application of a generic procedure on
+multiple arguments to the "appropriate" procedure for those specific arguments
+based on type predicates.
+
+Our problem is to take an individual object (/not/ in the object-oriented
+sense of the word, but in the s-expression sense of the word) and determine
+the set of procedures which /could/ be applied to it based on type predicates
+and present these options interactively to the user in a useful manner.
+
+[Various optimizations to this process will be discussed]
+
+We will consider and demonstrate this system in the domains of a) the R5RS
+Scheme builtin types and procedures and b) the scmutils types and special
+procedures for mathematics and physics. Our "range" for these domains will
+be an interactive REPL environment (or just text interaction?) and a GTK
+graphical user interface.
+
+Other domains this system could be applied to include:
+ random correctness or unit testing of complex systems
+ automatically generated generic user interfaces
+
+Related problems (which could be covered by this work?):
+ chaining procedures (eg if f maps A->B and g maps B->C, then gof maps
+ A->C which might be what we want
+ some kind
diff --git a/final_project/work/examples.scm b/final_project/work/examples.scm
new file mode 100644
index 0000000..314820b
--- /dev/null
+++ b/final_project/work/examples.scm
@@ -0,0 +1,29 @@
+
+; these could be considered as unit tests or demonstrations
+
+(describe 5.67)
+; This is a rational number
+
+(describe (up 3 4 5))
+; This is an "up" tuple of three integers
+
+(describe #(3.5 8 3))
+; This is a vector of three rational numbers
+
+(describe (*number* (sin (+ 4 'b))))
+; This is an expression with one variable which returns a number
+
+
+(describe-options (lambda (x y) (+ (* x 3) (square y))))
+; This is a procedure which accepts two arguments. You could:
+; 1) Evaluate for two inputs
+
+(describe-options (literal-function 'g (-> (X Real Real) Real)))
+; This is a math function which maps two reals to one real. You could:
+; 1) Evaluate numerically for two real inputs
+; 2) Differentiate symbolically for either variable
+; 3) Find the gradient function symbolically
+; 4) Plot in three dimensions over a given domain
+; 5) Plot in two dimensions for a fixed value of the first or second var
+; 6) Numerically calculate the maximum or minimum
+