On Mon, Nov 7, 2011 at 1:05 PM, kcrisman <kcris...@gmail.com> wrote:
>
>
> On Nov 7, 3:00 pm, William Stein <wst...@gmail.com> wrote:
>> Hi,
>>
>> Twice in the last day I've hit this deprecation warning due to making
>> a stupid typo:
>>
>> sage: d(N) = (1/2)*(N^2-1)(N^2-N)/(N-1)       # contains stupid typo
>> /Users/wstein/sage/install/current/local/lib/python2.6/site-packages/IPytho 
>> n/iplib.py:2073:
>> DeprecationWarning: Substitution using function-call syntax and
>> unnamed arguments is deprecated and will be removed from a future
>> release of Sage; you can use named arguments instead, like EXPR(x=...,
>> y=...)
>>   exec code_obj in self.user_global_ns, self.user_ns
>>
>> I've been trying to get rid of this mistake in symbolic calculus since
>> probably 2007.   I say we get rid of it soon, e.g., in sage-4.8 (or
>> certainly in sage-5.0).  It's time for it to go.
>
> Even though not agreed, I recognize my opinion is in the minority, and
> so I've been teaching people to avoid it for at least two years in
> seminars/workshops.
>
> But because of that experience, I have a recommendation.
>
> If you open a ticket (or find one) for this, I think that we should
> definitely put some easy-to-find documentation (maybe in the top-level
> calculus and symbolics pages) that shows how to change "bad old" code,
> especially in certain plotting situations, to the "new good" code
> style.  As well as some nice examples saying, "Until [2011,2012] we
> used this, but it no longer works" (with doctest).
>
> This is one of those places where having the automatic testing of
> sagenb-type worksheets would be really helpful, because it would
> uncover the most typical (ab)use cases.  My guess is there are still
> people using old ones.  For instance, I hadn't taught a particular
> course in two years, and discovered lots of them in my plot interacts
> - where you need to say
>
> @interact
> def _(f=x^2)
>    g(x) = f
>    plot(g)
>
> and that is a little weird, but
>
>    plot(f)
>
> I think causes this error.  (? if I recall correctly - it was
> something along these lines but I don't remember for sure)
>
> Anyway, just a recommendation.

We could make plot continue to work, even after removing calling, by
testing to see if f has exactly one symbolic variable, and if so call
it.  There's a huge difference between a mistake like this:

         sage: d(N) = (N^2-1)(N^2-N)/(N-1)   # note the missing * --
should be (N^2-1)*(N^2-N)/(N-1)

and something like

        sage: d = N^2-1
        sage: plot(d)

where it is clear what is intended.

 -- William

>
> - kcrisman
>
> --
> To post to this group, send an email to sage-devel@googlegroups.com
> To unsubscribe from this group, send an email to 
> sage-devel+unsubscr...@googlegroups.com
> For more options, visit this group at 
> http://groups.google.com/group/sage-devel
> URL: http://www.sagemath.org
>



-- 
William Stein
Professor of Mathematics
University of Washington
http://wstein.org

-- 
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Reply via email to