Coerce maps
Bases: sage.categories.map.Map
Bases: sage.categories.map.Map
This lets one easily create maps from any callable object.
This is especially useful to create maps from bound methods.
EXAMPLES:
sage: from sage.structure.coerce_maps import CallableConvertMap
sage: def foo(P, x): return x/2
sage: f = CallableConvertMap(ZZ, QQ, foo)
sage: f(3)
3/2
sage: f
Conversion via foo map:
From: Integer Ring
To: Rational Field
Create a homomorphism from to
viewed as additive groups.
sage: f = CallableConvertMap(RR, RR, exp, parent_as_first_arg=False)
sage: f(0)
1.00000000000000
sage: f(1)
2.71828182845905
sage: f(-3)
0.0497870683678639
Bases: sage.categories.map.Map
This morphism simply calls the codomain’s element_constructor method, passing in the codomain as the first argument.
Bases: sage.structure.coerce_maps.DefaultConvertMap
This morphism simply defers action to the codomain’s element_constructor method, WITHOUT passing in the codomain as the first argument.
This is used for creating elements that don’t take a parent as the first argument to their __init__ method, for example, Integers, Rationals, Algebraic Reals... all have a unique parent. It is also used when the element_constructor is a bound method (whose self argument is assumed to be bound to the codomain).
Bases: sage.categories.map.Map
Bases: sage.categories.map.Map
This is used for creating a elements via the _xxx_ methods.
For example, many elements implement an _integer_ method to convert to ZZ, or a _rational_ method to convert to QQ.
Bases: sage.categories.map.Map
TESTS:
sage: sage.structure.coerce_maps.TryMap(RDF.coerce_map_from(QQ), RDF.coerce_map_from(ZZ))
Traceback (most recent call last):
...
TypeError: incorrectly matching parent
For testing CCallableConvertMap_class.
TESTS:
sage: from sage.structure.coerce_maps import test_CCallableConvertMap
sage: f = test_CCallableConvertMap(ZZ, 'test'); f
Conversion via c call 'test' map:
From: Integer Ring
To: Integer Ring
sage: f(3)
24
sage: f(9)
720