#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.

Reply via email to