[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Axiom-mail] sum()
From: |
Martin Rubey |
Subject: |
Re: [Axiom-mail] sum() |
Date: |
Wed, 23 Jun 2004 12:20:11 +0000 |
Martin Rubey writes:
> Martin Rubey writes:
> > You tried:
> >
> > > f: Integer -> Integer;
> > > f(0)==1; f(1)==2;
> > > f(n)==sum(f(i)*f(n-i), i=0..(n-1))
> >
> > Try
> >
> > f: Integer -> Integer;
> > f(0)==1; f(1)==2;
> > f(n)==reduce(+,[f(i)*f(n-i) for i in 1..(n-1)])
> >
Now I got it:
f:EXPR INT -> EXPR INT
f(0)==1; f(1)==2;
f(n | number? n)==sum(f(i)*f(n-i), i=1..(n-1))
f(n | not number? n)==kernel(fop, [n])
fop := operator 'fop
evaluate(fop,f)
We declare the function to take expressions as arguments. If the argument is a
number, go ahead. Otherwise, return an unevaluated operator fop, which
evaluates to f...
I think that evaluating fop i does the following:
axiom looks for an %eval property of fop and finds f.
axiom applies f to i and returns kernel(fop, [i])
If we wrote
f(n | not number? n)==fop n
we produced an infinite loop...
Martin