|
From: Eduardo O. <edu...@gm...> - 2025-10-12 15:25:18
|
Hi all, yesterday I sent this message - https://sourceforge.net/p/maxima/mailman/message/59245215/ about tricks to understand the display functions... I just wrote something slightly better. If I run this in Maxima load("/tmp/dim-save.lisp"); a^b; a^bc; ab^cd; ab^(cd^ef); ab^(cd^(ef[gh])); :lisp (dim-show) I get this output: (%i1) load("/tmp/dim-save.lisp")$ (%i2) a^b; b (%o2) a (%i3) a^bc; bc (%o3) a (%i4) ab^cd; cd (%o4) ab (%i5) ab^(cd^ef); ef cd (%o5) ab (%i6) ab^(cd^(ef[gh])); ef gh cd (%o6) ab (%i7) :lisp (dim-show) (REV-OUT (( % o 2 ) (0 0) a (0 1 b))) (REV-OUT (( % o 3 ) (0 0) a (0 1 b c))) (REV-OUT (( % o 4 ) (0 0) a b (0 1 c d))) (REV-OUT (c d (0 1 e f))) (REV-OUT (( % o 5 ) (0 0) a b (0 1 c d (0 1 e f)))) (REV-OUT (c d (0 2 (0 0 e f) (0 -1 g h)))) (REV-OUT (( % o 6 ) (0 0) a b (0 1 c d (0 2 (0 0 e f) (0 -1 g h))))) NIL (%i7) Here is dim-save.lisp: cat > /tmp/dim-save.lisp <<'%%%' (defvar dim-saved) (setq dim-saved nil) (defun dim-save (&rest plist) (setq dim-saved `(,@dim-saved ,(copy-tree plist))) plist) (defun dim-show () (let ((*print-pretty* nil)) (loop for plist in dim-saved do (format t "~a~%" plist)))) (defun my-reverse-nnlist (abcd) (let* ((a (car abcd)) (b (cadr abcd)) (cd (cddr abcd))) `(,a ,b ,@(my-reverse cd)))) (defun my-reverse-otherlist (list) (reverse (mapcar #'my-reverse list))) (defun my-reverse (o) (if (listp o) (if (numberp (car o)) (my-reverse-nnlist o) (my-reverse-otherlist o)) o)) ;; `dimension-superscript-saving-1' saves a lot of information. ;; `dimension-superscript-saving-2' saves just the essential. (defun dimension-superscript-saving-1 (form result) (dim-save :pos 1 :form form :result result) (let ((out (dimension-superscript form result))) (dim-save :pos 2 :form form :result result :out out) out)) (defun dimension-superscript-saving-2 (form result) (let ((out (dimension-superscript form result))) (dim-save :rev-out (my-reverse out)) out)) (displa-def mexpt dimension-superscript-saving-2) (displa-def %mexpt dimension-superscript-saving-2) %%% Cheers, Eduardo |