diff options
Diffstat (limited to 'final_project/work')
-rw-r--r-- | final_project/work/description | 26 | ||||
-rw-r--r-- | final_project/work/examples.scm | 29 |
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 + |