Re: What is the status of ob-maxima.el? Is this a bug?
Hi Leo, On Tuesday, 5 Dec 2023 at 20:18, Leo Butler wrote: > I think it should be easy to provide this for a few data types (matrix, > string, maybe list), but I think the conversion from a Lisp sexp to an > ELisp sexp will need a lot of assumptions. E.g. how to convert the > Maxima list: > > [[a,b],[c,d,[e,f]]] > > Or maybe such cases are not important? Good question. I am not sure what the best approach would be. My own use case often does involve results which are vectors of vectors of values or expressions (solutions to system of equations). I typically simply output directly using either print or grind, as in #+begin_src maxima :results output for i: 1 thru length(solution[1]) do grind(solution[1][i])$ #+end_src where "solution" is the result of the computation in my (elided) example and I only care about the first solution. I haven't really thought about how the final "value" should be output. I'm happy to explore alternatives. > Also, what would we do with an arbitrary mathematical expression? Return > a printed representation? This might actually be the easiest, of course. > Developing a working session for maxima would make it more feasible to > use it directly in text, as you are using Calc. It would indeed be more feasible but not necessarily a benefit (to me), as such. I use Calc for pedagogical aspects, showing step by step calculations, and it has some benefits over Maxima for this, especially for engineering topics because it "understands" units (e.g. kg, J, m^2). Further, I have total control of the formatting by having defined my own embedded Calc format, lines that start with #+calc: which I can interpret during the export process in org. I use maxima to solve more detailed problems so that students can see the outcome of the algebra to compare with their own work. And there's the psychological/philosophical benefit of doing everything I can in Emacs itself! :-) But, having said that, consistency in the tools used is beneficial so doing step by step calculations with maxima instead of Calc could be a good thing for the students. It would be nice to have that option. Thank you, eric -- : Eric S Fraga, with org release_9.6.7-661-g34ee6f in Emacs 30.0.50
Re: What is the status of ob-maxima.el? Is this a bug?
On Tue, Dec 05 2023, "Fraga, Eric" wrote: > On Tuesday, 5 Dec 2023 at 16:59, Leo Butler wrote: >> You mentioned returning a value from a maxima code block. > > By this, I mean the value of the last sexp as some other src blocks do > (elisp? octave? Not sure which...). It's what I would expect to see if > I were to specify ":results value". I think it should be easy to provide this for a few data types (matrix, string, maybe list), but I think the conversion from a Lisp sexp to an ELisp sexp will need a lot of assumptions. E.g. how to convert the Maxima list: [[a,b],[c,d,[e,f]]] Or maybe such cases are not important? Also, what would we do with an arbitrary mathematical expression? Return a printed representation? > > And your improvements definitely look good! Thanks. I use maxima a lot > for teaching so will need to reconsider the material on some of my > slides (next year... :-)). > > I also use embedded Calc as it's easier to incorporate directly in text, > especially in org, but Calc is not quite as capable as maxima as a > computer algebra system. Thanks. I have used Calc, but never really got the hang of it. Developing a working session for maxima would make it more feasible to use it directly in text, as you are using Calc. Leo
Re: What is the status of ob-maxima.el? Is this a bug?
On Tuesday, 5 Dec 2023 at 16:59, Leo Butler wrote: > You mentioned returning a value from a maxima code block. By this, I mean the value of the last sexp as some other src blocks do (elisp? octave? Not sure which...). It's what I would expect to see if I were to specify ":results value". And your improvements definitely look good! Thanks. I use maxima a lot for teaching so will need to reconsider the material on some of my slides (next year... :-)). I also use embedded Calc as it's easier to incorporate directly in text, especially in org, but Calc is not quite as capable as maxima as a computer algebra system. -- : Eric S Fraga, with org release_9.6.7-661-g34ee6f in Emacs 30.0.50
Re: What is the status of ob-maxima.el? Is this a bug?
On Tue, Dec 05 2023, "Fraga, Eric" wrote: > On Tuesday, 5 Dec 2023 at 16:42, Leo Butler wrote: >> With recent versions of ob-maxima.el, you can set header arguments to >> get the behaviour Eduardo expected: > > Thank you. This is great news. > > I'm going to have to upgrade as the version I'm currently using (from > 1-2 months ago, I think) doesn't seem to pay attention to :cmdline > --quiet and/or :results raw. Yes, it is relatively recent work (see below). You mentioned returning a value from a maxima code block. I wonder if you could elaborate? I could imagine either the lisp sexp of the last expression or the printed representation (e.g. in linear/1d form). But maybe you have something else in mind? Leo #+begin_src elisp :exports results (org-version) #+end_src #+RESULTS: : 9.7-pre #+NAME: batch-quiet-maxima #+HEADER: :batch batch #+HEADER: :exports results #+HEADER: :results raw #+HEADER: :wrap example #+HEADER: :cmdline --quiet #+BEGIN_SRC maxima rat(1/(x+1) + x/(x-1)); #+END_SRC #+RESULTS: batch-quiet-maxima #+begin_example (%i1) rat(1/(x+1)+x/(x-1)) 2 x + 2 x - 1 (%o1)/R/ 2 x - 1 #+end_example
Re: What is the status of ob-maxima.el? Is this a bug?
On Tuesday, 5 Dec 2023 at 16:42, Leo Butler wrote: > With recent versions of ob-maxima.el, you can set header arguments to > get the behaviour Eduardo expected: Thank you. This is great news. I'm going to have to upgrade as the version I'm currently using (from 1-2 months ago, I think) doesn't seem to pay attention to :cmdline --quiet and/or :results raw. -- : Eric S Fraga, with org release_9.6.7-661-g34ee6f in Emacs 30.0.50
Re: What is the status of ob-maxima.el? Is this a bug?
On Tue, Dec 05 2023, "Fraga, Eric" wrote: > I think ob-maxima will only output the actual explicit "output" of the > script, so something like > > #+begin_src maxima > print(2+3); > #+end_src > > should work. With recent versions of ob-maxima.el, you can set header arguments to get the behaviour Eduardo expected: #+NAME: batch-quiet-maxima #+HEADER: :batch batch #+HEADER: :results raw #+HEADER: :wrap example #+HEADER: :cmdline --quiet #+BEGIN_SRC maxima rat(1/(x+1) + x/(x-1)); #+END_SRC See "An example with line numbering" at https://orgmode.org/worg//org-contrib/babel/languages/ob-doc-maxima.html Leo
Re: What is the status of ob-maxima.el? Is this a bug?
On Tuesday, 5 Dec 2023 at 08:34, Eduardo Ochs wrote: > Ouch! I'm so used to using Maxima from its REPL that I forgot to test > that... thanks and sorry! =/ No apology required. It would be good if ob-maxima had implemented the concept of returning the last value, as some other language implementations do, but my elisp-fu (and maxima-fu) was not up to the challenge when I wrote the initial version of ob-maximal.el (much improved later by Eric Shulte). And having it output everything that maxima actually outputs in the REPL I considered to be too overwhelming. Hence the "--very-quiet" option passed to maxima on execution. -- : Eric S Fraga, with org release_9.6.7-661-g34ee6f in Emacs 30.0.50
Re: What is the status of ob-maxima.el? Is this a bug?
Ouch! I'm so used to using Maxima from its REPL that I forgot to test that... thanks and sorry! =/ Eduardo On Tue, 5 Dec 2023 at 07:36, Fraga, Eric wrote: > > I think ob-maxima will only output the actual explicit "output" of the > script, so something like > > #+begin_src maxima > print(2+3); > #+end_src > > should work. > > -- > : Eric S Fraga, with org release_9.6.7-661-g34ee6f in Emacs 30.0.50
Re: What is the status of ob-maxima.el? Is this a bug?
I think ob-maxima will only output the actual explicit "output" of the script, so something like #+begin_src maxima print(2+3); #+end_src should work. -- : Eric S Fraga, with org release_9.6.7-661-g34ee6f in Emacs 30.0.50
What is the status of ob-maxima.el? Is this a bug?
Hi list, what is the status of ob-maxima.el? Is it considered to be functional? If yes, what am I doing wrong? If no, should I file a bug report about the problem below? If I eval these two sexps and then execute the code block below them with `C-c C-c' - obs: I added some indentation for clarity, (setq org-confirm-babel-evaluate nil) (require 'ob-maxima) #+begin_src maxima 2+3; #+end_src then I get this "#+RESULTS:" block when the first "maxima" found in the $PATH is /usr/local/bin/maxima, that is a script that runs a Maxima compiled from the git sources a few days ago, #+RESULTS: | Adding | 118 | subdirectories | of | /usr/local/share/maxima/branch_5_47_base_312_gd5a35a21b/share | to | search | path. | | Adding | 0 | subdirectories | of | /home/edrx/.maxima| to | search | path. | | Loading | /home/edrx/.maxima/maxima-init.lisp ||| ||| | | Loading | /home/edrx/.maxima/maxima-init.mac ||| ||| | and I get this empty "#+RESULTS:" block #+RESULTS: when the first "maxima" found in the $PATH is /usr/bin/maxima, that is a script that runs the Maxima that comes with Debian 11 ("oldstable")... If I simply run the tests above in a shell the log is: /home/edrx(edrx:sc)# /usr/local/bin/maxima Adding 118 subdirectories of "/usr/local/share/maxima/branch_5_47_base_312_gd5a35a21b/share" to search path. Adding 0 subdirectories of "/home/edrx/.maxima" to search path. Loading /home/edrx/.maxima/maxima-init.lisp Loading /home/edrx/.maxima/maxima-init.mac Maxima branch_5_47_base_312_gd5a35a21b https://maxima.sourceforge.io using Lisp SBCL 2.1.1.debian Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. The function bug_report() provides bug reporting information. (%i1) 2+3; (%o1) 5 (%i2) quit()$ /home/edrx(edrx:sc)# /home/edrx(edrx:sc)# /usr/bin/maxima Maxima 5.44.0 http://maxima.sourceforge.net using Lisp GNU Common Lisp (GCL) GCL 2.6.12 Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. The function bug_report() provides bug reporting information. (%i1) 2+3; (%o1) 5 (%i2) quit()$ /home/edrx(edrx:sc)# Thanks in advance, Eduardo Ochs http://anggtwu.net/eepitch.html