compiling Maxima code with arrays



fabrizio.caruso at math.univ-rennes1.fr wrote:
> Hi!
>
> When I compile:
> foo(x) := block([r], r : make_array('fixnum,2), r[0]:x,r[1]:x+1, return(r));
> or
> foo(x) := block([r:make_array('fixnum,2)], r[0]:x,r[1]:x+1, return(r));
>
> foo stops working and gives the following error message:
>   
This bug is caused by essentially the same bug that makes your previous 
compiled array reference example fail.

In src/trans2.lisp, you can add a new clause like so to make it work:

(defun maset1 (val ar &rest inds &aux )
  ...
  (cond
    ((typep ar 'cl:array)  ; <--- new stuff
     (setf (apply #'aref ar inds) val))
    ((one-of-types .type. (make-array 3))
    ...)))

Ray