On Thu, Mar 31, 2011 at 11:25 PM, Simon King simon.k...@uni-jena.de wrote:
Hi!
I hope sage-devel is the right place to ask a very basic question on
the coercion model.
sage.structure.parent.Parent has methods register_conversion and
register_coercion. What is the difference between conversion and
coercion? I see that there are different caches for the two. In what
situation is a coercion used, and in what situation a conversion?
A conversion is like a cast, which tries to make the object if it
makes sense at all. This is useful, for example, during construction.
E.g. there's a conversion QQ - ZZ, list - QQ[x], or even str - ZZ.
They are invoked with __call__. Coercions are the set of conversions
that happen automatically and implicitly, e.g. during arithmetic. We
don't want to support str + ZZ, and ZZ coerces to QQ but not the other
way around.
BTW, I think a method that tells whether there is already a conversion
resp. a coercion from a ring R is cached, would be quite handy. I
could not find such method (returning R in self._coerce_from_hash
resp. R in in self._convert_from_hash). Is there anything, or shall
I implement it myself?
No, I don't think there's anything like that yet.
- Robert
--
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