[Edu-sig] The Great Computer Language Shootout
Luby Liao
liao@sandiego.edu
Sun, 3 Jun 2001 11:13:43 -0700 (PDT)
Dustin and Kirby, thank you for the insight. cheers, Luby
> On Sun, 3 Jun 2001, Luby Liao wrote:
>
> Here's a better way to pass extra variables to a lambda, without globals:
>
> def compose(f,g):
> return lambda x,_f=f,_g=g : _f(_g(x))
>
> That is the closest to a lambda binding you're going to get. Python
> doesn't automatically slurp up local variables when it creates a lambda,
> but it can be easily simulated using default arguments, as above.
>
> I read about this in an article -- I think by Guido -- a while ago, but I
> don't have time to look it up right now.
>
> Enjoy.
>
> Dustin
>
> > How about:
> >
> > def compose(f,g):
> > global _f, _g
> > _f = f
> > _g = g
> > return lambda x: _f(_g(x))
> >
> > if __name__ == '__main__':
> > from math import *
> > print compose(sin, sqrt)(3)
> > print sin(sqrt(3))
> >
> > 0.98702664499
> > 0.98702664499
> >
> >
> > cheers, Luby
> >
> > _______________________________________________
> > Edu-sig mailing list
> > Edu-sig@python.org
> > http://mail.python.org/mailman/listinfo/edu-sig
> >
>
> ---------------------------------------------------------------------
> | Dustin Mitchell )O( |
> ---------------------------------------------------------------------