[Aldor-l] [open-axiom-devel] [fricas-devel] Re: coercion problem
Martin Rubey
martin.rubey at univie.ac.at
Fri Nov 14 12:50:58 EST 2008
Ralf Hemmecke <ralf at hemmecke.de> writes:
> > UPOLYCoerce(A: UPOLYC, B: UPOLYC): with
> > coerce: A -> B
> > add
> > coerce a ==
> > resta := a
> > res: B := 0
> > while not zero? resta repeat
> > res := res + leadingCoefficient resta * leadingMonomial resta
> > resta := reductum resta
> > res
>
> > and this will provide a coercion function from any A to any B in UPOLYC
>
> In other words, for any A and B you have a package that implements coerce:
> A->B. OK.
>
> > but I cannot state that for any A and any B in UPOLYC
>
> > A has CoercibleTo B
>
> Now why do you think this is still important? Onces *you* have programmed
> UPOLYCoerce and you know that A: UPOLYC and B: UPOLYC then everything is clear
> and you can simply say (for a: A)
>
> b: B := coerce(a)$UPOLYCoerce(A,B)
>
> I see no need to require "A has CoercibleTo B". Perhaps, I still didn't get
> your point.
Well, I may want to code
if A has CoercibleTo SparseUnivariatePolynomial R
then ...
This will "work" only for those A for which I have explicitly stated
CoercibleTo SparseUnivariatePolynomial R.
In a different package, I may want to ask
if A has CoercibleTo UnivariatePolynomial(x, R)
then ...
Of course, this is not really a problem if there are only two or three
implementations of univariate polynomials, say A, B and C. In A I say
with { CoercibleTo B; CoercibleTo C; }
in B I say
with { CoercibleTo A; CoercibleTo C; }
in C I say
with { CoercibleTo A; CoercibleTo B; }
But somehow, this looks suboptimal.
Martin
More information about the Aldor-l
mailing list