#10963: More functorial constructions
-------------------------------------+-------------------------------------
       Reporter:  nthiery            |        Owner:  stumpc5
           Type:  enhancement        |       Status:  needs_work
       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:  Detect and fix
  public/ticket/10963                |  Heisenbugs
   Dependencies:  #11224, #8327,     |       Commit:
  #10193, #12895, #14516, #14722,    |  5ccf253b17c151d8e773037ac634a64f84f03075
  #13589, #14471, #15069, #15094,    |     Stopgaps:
  #11688, #13394, #15150, #15506     |
-------------------------------------+-------------------------------------

Comment (by SimonKing):

 Here is the proof of concept of a cached function that prevents infinite
 recursion by storing some value in its cache:
 {{{
 sage: @cached_function
 ....: def bla(x):
 ....:     bla.cache[(x,),()] = None
 ....:     try:
 ....:         if x:
 ....:             return bla(x-1)+2
 ....:         return bla(x) or 100
 ....:     finally:
 ....:         try:
 ....:             del bla.cache[(x,),()]
 ....:         except KeyError:
 ....:             print x,"not stored"
 ....:
 sage: bla(3)
 106
 }}}

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