From e811f275d54e9b19bcf0c35e4e8a862b9eeff005 Mon Sep 17 00:00:00 2001 From: bnewbold Date: Thu, 30 Apr 2009 23:06:34 -0400 Subject: project prog --- final_project/work/description | 26 ++++++++++++++++++++++++++ final_project/work/examples.scm | 29 +++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 final_project/work/description create mode 100644 final_project/work/examples.scm 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 + -- cgit v1.2.3