From: Barton W. <wi...@un...> - 2014-04-20 22:22:48
|
A simple example of the somewhat unfortunate behavior: (%i1) f(x,i) := x[i]$ OK: (%i2) f(z,8); (%o2) z[8] (%i3) x[%pi] : 42$ unexpected (?): (%i4) f(z,8); (%o4) x[8] A cure is to use local--it " removes any properties before evaluating other expressions, and restores any saved properties on exit from the block or other ..." (%i5) g(x,i) := (local(x), x[i])$ (%i6) g(z,8); (%o6) z[8] Our user documentation should have a stern warning against uncritical use of undeclared arrays. If you use them because you like the they display, consider changing your preferences. One not so great thing about undeclared arrays is that some (all?) declarations don't work: (%i8) declare(xx[1],integer); declare: improper argument: xx[1] _______________________________________ |