Ralf Hemmecke <[EMAIL PROTECTED]> 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
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
open-axiom-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/open-axiom-devel