Could I take a crack at editing it? I won't change the book online directly, I'll mail you the modified markup text directly, to check with you.
Ok? On Sep 19, 10:09 pm, mdipierro <mdipie...@cs.depaul.edu> wrote: > You are right. > > On Sep 19, 2:14 pm, cjrh <caleb.hatti...@gmail.com> wrote: > > > > > Hi > > > With my editor cap on, I am working my way through the documentation. > > The section on lambda, in the python language section of the book, > > makes me uncomfortable. It says this: > > > *** > > The existence of lambda allows re-factoring an existing function in > > terms of a different set of arguments. cache.ram and cache.disk are > > web2py caching functions. > > *** > > > It is implied that the lambda keyword allows currying, when in fact > > that functionality is provided by standard Python functions. For > > example (using the example given in the text), > > > >>> def f(a, b): return a + b > > >>> g = lambda a: f(a, 3) > > >>> g(2) > > > 5 > > > Could be written without lambda as > > > >>> def f(a,b): return a + b > > >>> def g(a): return f(a, 3) > > >>> g(2) > > > 5 > > > The anonymity of lambda means that inline code is allowed, because no > > prior declaration is needed in order to obtain a reference, as is the > > case with def, but on the other hand, lambdas are limited to a single > > expression, whereas def functions are not. Consider the next example: > > > >>> number = 7 > > >>> print cache.ram(str(number), lambda: isprime(number), seconds) > > True > > >>> print cache.ram(str(number), lambda: isprime(number), seconds) > > > True > > > Could be rewritten as > > > >>> number = 7 > > >>> def isprimecall: return isprime(number) > > >>> print cache.ram(str(number), isprimecall, seconds) > > True > > >>> print cache.ram(str(number), isprimecall, seconds) > > > True > > > In conclusion, the description of lambda in the text is misleading. > > Comments?