On Wednesday, January 21, 2015 at 2:39:52 AM UTC-8, Snark wrote:
>
>
> Ah, ha! That helps. But, let's take the following code (extracted from 
> src/sage/interfaces/maxima_lib.py) : 
>
> from sage.libs.ecl import * 
>
> ecl_eval("(require 'maxima)") 
> ecl_eval("(in-package :maxima)") 
> ecl_eval("#$load(abs_integrate)$") 
>
> it gives me: 
> RuntimeError: ECL says: THROW: The catch MACSYMA-QUIT is undefined. 
>

And obviously, maxima_lib.py doesn't suffer from this problem, because the 
code there executes quite frequently without this error. Apparently there 
is something different between what you do and what happens in 
maxima_lib.py. Indeed, there is more code in maxima_lib.py. Right below the 
(in-package :maxima) we have:

(defvar *MAXIMA-LANG-SUBDIR* NIL)
(set-locale-subdir)
(set-pathnames)

 and then load works. Maxima needs more initialization than requiring the 
package. A large part of maxima was already written before the CL standard 
was made and before packages were introduced, so it has a lot of archaic 
bits to the code. It certainly was never designed to be used as a lisp 
library, so you need to jump through odd hoops to get it to work as such. 
It may also be possible that maxima does have a better initialization 
routine that has everything packaged in, but I wasn't able to find it (and 
reverse engineering what WAS needed took quite a bit of trial and error).

Concerning the THROW: Maxima has its own error signalling mechanism that 
requires a guard on the stack to CATCH the THROWs. 

To put an appropriate catch in place, maxima_lib defines maxima-eval, which 
is hugely improved in:

http://trac.sagemath.org/ticket/14308

I was fully expecting that ticket to be merged already, but apparently 
no-one cares about the issue there. It's still worth merging the much 
simpler implementation of maxima-eval, though.

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to