>
> Not sure I understand what you mean by "the asymmetry of how a subscripted
> function argument is passed onwards to subfunctions".
By asymmetry I intended to mean the behavior that you described as quoting
or not quoting an argument; the example is the initial one: for subscripted
foo, calling directly arrayinfo (foo) or passing foo indirectly to
arrayinfo through another function.
Can you give an example of the problem?
Well, there is no real obstacle anymore, I was just confused about the
nature of subscripted functions. It took some playing around to figure out
what you have pinpointed: there is no function f[i](x) per se, only
memoized values when evaluating with specific indices.
If it is of interest to you, my objective is to build a package to assist
me with a certain type of differential recurrence relation in several
variables that turns out in some flavor of asymptotic analysis. There are
two indices, i and j, say, on which two difference operators act, and two *or
more* variables with corresponding differential operators. Maxima is
helping me check calculations and test conjectures.
Anyway, thanks to everyone for their expert help. I'll stick around.
Cheers,
Manuel
On Wed, Oct 30, 2013 at 11:53 PM, Stavros Macrakis <macrakis at alum.mit.edu>wrote:
> Not sure I understand what you mean by "the asymmetry of how a subscripted
> function argument is passed onwards to subfunctions". Can you give an
> example of the problem?
>
> Are you talking about *undefined* subscripted functions, or *defined *subscripted
> functions. If you define
>
> f[i](x):=x^i
>
> that is just a shorthand way of defining a family of functions:
>
> f[i] := subst(i,'i,lambda([x],x^i))
>
> That is, there is no function f[i](x) per se.
>
> -s
>
>
> On Wed, Oct 30, 2013 at 10:04 PM, MGJT <valhifi at gmail.com> wrote:
>
>> Thank you for replying. It has only been a couple of weeks since I
>> started learning maxima and lisp, and as some of you probably know, it is a
>> rollercoaster ride, especially after years of getting by on matlab/octave
>> and C++.
>>
>> The thing that threw me off balance was the asymmetry of how a
>> subscripted function argument is passed onwards to subfunctions. I was able
>> to work around the issue; for validation of a subscripted function foo, I do
>>
>> namesake: arrayapply (foo, [idx])$
>> is (op (namesake) = lambda)
>>
>> and for _constructing_ objects, as Stavros points out, I do
>>
>> arraymake (foo, idx)
>>
>> Learning maxima from the manual is not far off from learning a language
>> with just a dictionary, with awareness of the quoting behavior being akin
>> to getting the feel of verb transitivity. However, playing around with
>> maxima is particularly easy and attractive, so maybe at some later point I
>> will submit some tutorial-like notes for the maling list's consideration.
>>
>> Cheers,
>>
>> Manuel
>>
>>
>> On Wed, Oct 30, 2013 at 6:27 PM, Henry Baker <hbaker1 at pipeline.com>wrote:
>>
>>> One of the shortcomings of the Common Lisp standardization committee was
>>> that many Common Lisp operations were defined as _macros_ or _special
>>> forms_ rather than functions.
>>>
>>> There was nothing wrong with defining macros and special forms, but
>>> these particular definitions should have been expanded into calls upon
>>> _standardized_ Common Lisp functions.
>>>
>>> There is no reason why Maxima has to make the same mistake.
>>>
>>> Any Maxima function which "for convenience" quotes its argument(s)
>>> should expand into a _documented Maxima function_ which _doesn't_ quote its
>>> argument(s).
>>>
>>> At 02:53 PM 10/30/2013, Stavros Macrakis wrote:
>>> >arrayinfo is one of those annoying functions which, "for the user's
>>> convenience", quotes its argument.
>>>
>>>
>>>
>>
>