|
@@ -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>
|