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