Hello,
i am trying to write a grind variant to convert expressions so that they can
be embedded in Gnu GMP programs. In the course of doing that, i have, of
course, consulted forta.lisp, grind.lisp and mactex.lisp, but i see that
some expressions are of the following form:
niobe% maxima
(%i1) x:y*(z+t^2)$
(%i2) :lisp $X
((MTIMES . #1=(SIMP)) $Y ((MPLUS . #1#) ((MEXPT . #1#) $T 2) $Z))
I am puzzled by the #1=(SIMP) ... #1#
I suppose that #1 has to be replaced by SIMP but would someone be kind
enough to explain how this syntax can be understood from lisp?
Well, grind.lisp is not the most obvious thing to understand, i see
that prof Fateman has lifted some parts to texmacs.lisp and added some
comments, but does someone know what msize is supposed to do? I am puzzled
by such stuff:
(%i2) :lisp (msize $X nil nil 'mparen 'mparen)
(9 (1 y) (8 (3 * ( z) (5 (2 + t) (3 ^ 2 )))))
>From Fateman's comments i see that in
defun msize (x l r lop rop)
l and r are supposed to be stuff at the left and right of x, while
lop and rop are left and right "parenthesis", here true parenthesis,
but if somebody remembers what is this left and right stuff, and what
these numbers 9 8 etc. mean, i would be grateful.
By the way, at first sight, 9 is the total number of characters in the
expansion of x, in (1 y) y has 1 character, in (8 ( ...)) there are 8
characters after the *, but at (3 * i don't understand precisely ...
Of course i suppose the aim is to be able to cut long lines by counting
characters but how exactly?
Thanks a lot
--
Michel Talon