#10963: More functorial constructions
-------------------------------------------------------------------------+--
       Reporter:  nthiery                                                |      
   Owner:  stumpc5                                                              
                        
           Type:  enhancement                                            |      
  Status:  needs_work                                                           
                        
       Priority:  major                                                  |     
Milestone:                                                                      
                         
      Component:  categories                                             |    
Resolution:                                                                     
                          
       Keywords:                                                         |   
Work issues:  Reduce startup time by 5%. Avoid "recursion depth exceeded 
(ignored)". Trivial doctest fixes.
Report Upstream:  N/A                                                    |     
Reviewers:  Simon King                                                          
                         
        Authors:  Nicolas M. Thiéry                                      |     
Merged in:                                                                      
                         
   Dependencies:  #11224, #8327, #10193, #12895, #14516, #14722, #13589  |      
Stopgaps:                                                                       
                        
-------------------------------------------------------------------------+--

Comment (by SimonKing):

 I try to summarize how I understand how the patch works---so, please
 correct me if I misunderstood.

 Generally, adding an axiom A to a category C means: Forming the join of C
 with `C._with_axiom_categories(A)`, unless there is a class
 `getattr(C,A)`, for example: `Magmas().Associative` is `Semigroups`. The
 categories returned by `C._with_axiom_categories(A)` would, for example,
 provide new parent and element methods (such as: `prod()` only makes sense
 in an associative magma, `_test_one()` only makes sense for unital
 magmas).

 If I understand correctly, the same "axiom category" (here:
 `Magmas.Associative`) is available to all subcategories of `Magmas()`,
 because it is defined in `Magmas.SubcategoryMethods`. Or am I mistaken and
 it is ''not'' the same? Is another dynamic class involved here? This could
 also give rise to slowness.

 Apart from hard-coded cases, the rôle of `JoinCategory` has generally
 increased, and this indicates it might make sense to spend some
 optimization there. A highly significant increase of at least 5% of
 startup time is rather much. I don't know if `JoinCategory` is the only
 problem here.

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/10963#comment:43>
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