| Bill Allombert on Tue, 18 Sep 2012 14:43:46 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| iterator interface |
Dear PARI developers,
There is an ongoing discussion on pari-users on the subject of new iterators
like forprime/forcomposite/forprimepowers.
So maybe we should extend the description system to cover iterators in a more
straightforward way.
The current 2.6 interface looks like (since last week...)
{
GEN p;
forprime_t primepointer;
forprime_init(&primepointer, gen_1, stoi(100));;
while ((p = forprime_next(&primepointer)))
pari_printf("%Ps\n", p);
}
So for each iterators that conforms to this model we need:
1) a type (forprime_t)
2) an init function (forprime_init)
3) a next function (forprime_next)
We need a description for each of them and furthermore we can provide variants depending
on the type of the loop index. As a result we need 6 descriptions just for
forprime (see src/functions/programming/forprime).
To avoid hard-coding everything, iterators could have an extra description field:
Iterator: (forprime_t,_forprime_init,_forprime_next)
However we need to define the calling convention for _forprime_init/_forprime_next
(not for the matching C functions!).
Some suggestion:
1) We could use a single type for all iterators to make thing simpler (we get
rid of forprime_t).
2) We could merge the description of the variants in a single description, by adding
the type of the loop index as an argument.
3) We could try to make forvec fit in this scheme.
Cheers,
Bill.