On Fri, Apr 23, 2010 at 11:07 PM, Nathan O'Treally <not.rea...@online.de> wrote:
> "[...] A coercion from one parent to another must be defined on the
> whole domain, and always succeeds. As it may be invoked implicitly, it
> should be obvious and natural (in both the mathematically rigorous and
> colloquial sense of the word). [...]"
> There are situations where I would relax that and raise an exception
> e.g. if a specific value can't be implicitly converted because it has
> no representation in the target domain.
> For "conversions" in Sage it is said that success might depend on the
> actual values (as opposed to their types).

I think one of the cases, we argued about it a lot (SD4 and later), is
whether the canonical partial map QQ --> GF(p) should be an
(automatic) coercion or not. This is for the "defined on the whole
domain" part.

Also, the "== doesn't fail" part seems to force this, since it would
be even more awkward to hide the coercion failure.

I'd rather have

    sage: 1/3 == GF(3)(1)

raise a ZeroDivisionError, and

    sage: 1/4 == GF(3)(1)
    True
    sage: 1/5 == GF(3)(1)
    False

but others didn't agree with me.

You may have a point with the "exact domain" --> "inexact domain"
coercions being partial. I think the reasoning is that as long as you
only coerce from the exact domain into the inexact domain, there
shouldn't be problems. Also, inexact domains are NOT rings, so you
don't require the coercions to be ring homomorphisms.

With respect to NaN, it seems to me sage gets it wrong...

    sage: 0.0/0.0 == 0.0/0.0
    True


Gonzalo

-- 
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Reply via email to