On 5/21/07, Michel <[EMAIL PROTECTED]> wrote: > > Here is another coercion bug (or at least an inconsistency). Perhaps > it is not worth > fixing, given that everything is going to change.
It is not the case that "everything is going to change". The coercion system will iteratively improve with much thought and design, but most questions like the one you asking below would be unaffected. There is no magic that makes the work of implementing coercions just disappear, especially if one wants coercions to be fast (!). > Anyway consider > > sage: W=NumberField(z^2+1,'s') > sage: WXY.<X,Y>=W[] > sage: a=WXY(0) > sage: W(a) > --------------------------------------------------------------------------- > ... > <type 'exceptions.TypeError'>: Cannot coerce 0 into Number Field in s > with defining polynomial z^2 + 1 I do not think this is a bug. It is something that hasn't been implemented. There's never a guarantee that everything you can imagine can non-canonically be coerced to everything else. In many cases something has been implemented, but in this case it hasn't. > The same example over the rationals is fine > > sage: QUV.<U,V>=QQ[] > sage: a=QUV(0) > sage: QQ(a) > 0 > I could probably fix this but it is not so clear to me yet where this > automatic coercion happens. It's not automatic. You have to explicitly write W(a) above, which just calls the method W.__call__ with input a. That's the code you should look at. I strongly encourage you to look at __call__ and maybe improve it so W(a) works. Implement it and send me a patch. William --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~----------~----~----~----~------~----~------~--~---
