#10963: More functorial constructions
-------------------------------------+-------------------------------------
Reporter: nthiery | Owner: stumpc5
Type: enhancement | Status: needs_review
Priority: major | Milestone: sage-6.1
Component: categories | Resolution:
Keywords: days54 | Merged in:
Authors: Nicolas M. Thiéry | Reviewers: Simon King, Frédéric
Report Upstream: N/A | Chapoton
Branch: | Work issues:
public/ticket/10963 | Commit:
Dependencies: #11224, #8327, | 478de48553d203516cddb47e0cb89c34ccc210ee
#10193, #12895, #14516, #14722, | Stopgaps:
#13589, #14471, #15069, #15094, |
#11688, #13394, #15150, #15506 |
-------------------------------------+-------------------------------------
Comment (by nbruin):
Replying to [comment:330 nthiery]:
> In Algebras:
> {{{
> FiniteDimensional =
LazyImport('sage.categories.finite_dimensional_algebras',
'FiniteDimensionalAlgebras')
> }}}
>
> In FiniteDimensionalAlgebras:
> {{{
> _base_category_and_axiom = [Algebras, "FiniteDimensional"]
> }}}
Right. I was expecting something like that. The fact that each has to
refer to the other is suspicious to me. What is the scenario that makes
this absolutely necessary to be there right from the start? Wouldn't it be
possible for there to be only one link? Perhaps when that link is actually
exercised the other one can be put in place.
My default reaction would be that !FiniteDimensionalAlgebras needs to know
about Algebras because it needs to inherit the properties of Algebras, but
is it absolutely necessary for Algebras to know about a !FiniteDimensional
version, even before it is instantiated? In general I expect the
!LazyImport to be a bad sign. !LazyImports have trouble getting resolved
in the first place. In fact, in the traceback that Volker produced, you
can see there are is a !LazyImport involved in the deep recursion, so I
suspect that the !LazyImport in this case indeed does not get cleared
properly.
My default would be that `FiniteDimensionalAlgebras` only registers itself
with `Algebras` when it gets instantiated, if that is necessary at all.
That requires finding a solution for `Algebras().FiniteDimensional()` (is
that how you call it?) when that happens before
`FiniteDimensionalAlgebras` gets imported. Does that happen at all? If so,
what's the scenario? Perhaps we can solve that scenario.
(About the coercion framework: I do not intend to imply it's bad; it's
just trying to solve a hard problem, and I know for a fact that the
current iteration we have was very carefully designed, and certainly
wasn't the first version that was tried.)
--
Ticket URL: <http://trac.sagemath.org/ticket/10963#comment:331>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/groups/opt_out.