Browse Source

Define Expression Manipulator is done

Samuel W. Flint 7 years ago
parent
commit
588d31493c
1 changed files with 3 additions and 53 deletions
  1. 3 53
      larcs.org

+ 3 - 53
larcs.org

@@ -875,7 +875,7 @@ The ability to retrieve tha variable in a polynomial term is important.  This is
   <<poly-is-combinable>>
 #+END_SRC
 
-* WORKING Algebraic Manipulation [2/4]
+* WORKING Algebraic Manipulation [3/4]
 :PROPERTIES:
 :CREATED:  <2016-06-09 Thu 09:20>
 :ID:       b2c1fd45-b631-48f9-a093-66e1a0faa77f
@@ -943,7 +943,8 @@ To aid in the design and implementation of various sub-systems, from simplificat
                        (cons :trigonometrics trigonometrics)))))
 #+END_SRC
 
-** WORKING Define Expression Manipulator [2/3]
+** DONE Define Expression Manipulator [2/2]
+CLOSED: [2016-09-23 Fri 19:21]
 :PROPERTIES:
 :CREATED:  <2016-04-30 Sat 22:57>
 :ID:       63909972-428d-47f3-9dc3-3e1fb213aa70
@@ -1047,57 +1048,6 @@ This defines a macro, named ~manipulator-define-name~, taking a list of expressi
            ,@body))))
 #+END_SRC
 
-*** TODO Manipulation Example
-:PROPERTIES:
-:CREATED:  <2016-09-23 Fri 17:13>
-:END:
-
-#+Caption: Manipulation Example
-#+Name: am-ex-manip-example
-#+BEGIN_SRC lisp :results output raw :exports results :cache yes
-  (ql:quickload :larcs-lib :silent t)
-
-  (in-package #:larcs.manipulate)
-
-  (format t "#+Caption: Expression Manipulator Expansion~%#+Name: am-ex-manip-expansion~%#+BEGIN_SRC lisp :exports code~%~a~%#+END_SRC"
-          (macroexpand-1 '(define-operation frobnicate 2 frob)))
-#+END_SRC
-
-#+RESULTS[468c43c82d25c9776f1e482487e63f458252edcb]: am-ex-manip-example
-#+Caption: Expression Manipulator Expansion
-#+Name: am-ex-manip-expansion
-#+BEGIN_SRC lisp :exports code
-(PROGN
- (PUSH '(FROB . FROBNICATE) *MANIPULATOR-MAP*)
- (DEFVAR *MANIPULATORS-FROBNICATE* 'NIL)
- (DEFUN FROBNICATE-IS-APPLICABLE-P (TYPES EXPRESSION-A EXPRESSION-B)
-   (AND (CLASSIFIED-AS-P EXPRESSION-A (NTH 0 TYPES))
-        (CLASSIFIED-AS-P EXPRESSION-B (NTH 1 TYPES))))
- (DEFUN GET-FROBNICATE-MANIPULATORS (EXPRESSION-A EXPRESSION-B)
-   (REMOVE-IF #'NULL
-              (MAP 'LIST
-                   #'(LAMBDA (OPTION)
-                       (LET ((TYPES (CAR OPTION)) (NAME (CDR OPTION)))
-                         (IF (FROBNICATE-IS-APPLICABLE-P TYPES EXPRESSION-A
-                              EXPRESSION-B)
-                             NAME)))
-                   *MANIPULATORS-FROBNICATE*)))
- (DEFUN FROBNICATE (EXPRESSION-A EXPRESSION-B)
-   (FUNCALL (FIRST (GET-FROBNICATE-MANIPULATORS EXPRESSION-A EXPRESSION-B))
-            EXPRESSION-A EXPRESSION-B))
- (DEFMACRO DEFINE-FROBNICATE-MANIPULATOR
-           ((EXPRESSION-A-TYPE EXPRESSION-B-TYPE) &BODY BODY)
-   (LET ((MANIPULATOR-NAME
-          (SYMBOLICATE 'FROBNICATE-MANIPULATOR- EXPRESSION-A-TYPE
-                       EXPRESSION-B-TYPE)))
-     `(PROGN
-       (SETF ,'*MANIPULATORS-FROBNICATE*
-               (APPEND ,'*MANIPULATORS-FROBNICATE*
-                       '(((,EXPRESSION-A-TYPE ,EXPRESSION-B-TYPE)
-                          ,@MANIPULATOR-NAME))))
-       (DEFUN ,MANIPULATOR-NAME ,'(EXPRESSION-A EXPRESSION-B) ,@BODY)))))
-#+END_SRC
-
 ** TODO External Manipulator
 :PROPERTIES:
 :CREATED:  <2016-05-01 Sun 14:33>