explain this function to me, lambda confusion
andrej.panjkov at climatechange.qld.gov.au
andrej.panjkov at climatechange.qld.gov.au
Thu May 8 21:57:03 EDT 2008
On May 8, 6:11 pm, Duncan Booth <duncan.bo... at invalid.invalid> wrote:
>
> No, no, no, no, no!
>
Geez. Go easy.
> You have got it entirely wrong here. Your XOR function simply returns a
> function which gives you the result of xoring the parameters AT THE TIME
> WHEN YOU ORIGINALLY CREATED IT. I'm guessing that you had already set
> cream and icecream (otherwise the call to XOR would have thrown an
> exception) and at leas one was true. Try setting them both False at the
> beginning:
>
> >>> cream = False
> >>> icecream = False
> >>> topping = XOR( cream, icecream)
> >>> cream = True
> >>> icecream = False
> >>> print topping()
>
> False
>
Ok. I understand this better now. I did say I found the documentation
rather terse on this.
> Using a lambda was a completely pointless exercise here, you could have
> just returned the result directly:
If I try out a new language, I try to exercise those parts of the
language that are new to me. Now I saw lambdas, an interesting
structure I hadn't seen before. So I tried them out. I get to learn a
little at the same time as scripting. That was the "point". I only
get to optimise my use of a language by trying out various corners of
it.
> def TFF(x,y,z) :
> return x and not y and not z
>
> AddOnly = TFF( options.AddAction, options.ReplaceAction,
> options.DeleteAction )
> DeleteOnly = TFF( options.DeleteAction, options.AddAction,
> options.ReplaceAction )
> ReplaceOnly = TFF( options.ReplaceAction, options.AddAction,
> options.DeleteAction )
>
> if not (DeleteOnly or AddOnly or ReplaceOnly):
> print "Error: Exactly one of [ --add | --replace | --delete ]
> allowed. "
> parser.print_help()
> exit
>
> which boils down to:
>
> if (options.AddAction + options.ReplaceAction +
> options.DeleteAction) != 1:
> print "Error: ..."
Indeed, there are many ways this could be done. Some are more
concise, some are more efficient. As I said, I did it the way I did
it to try out lambdas. Your way achieves the result, rather elegantly
I think, but teaches me nothing about using lambdas.
Pardon my tetchiness, but it is a little hard to receive such blunt
and inflexible replies to my posts.
Both the responses offer lambda free alternatives. That's fine, and
given the terse documentation and problems that I had understanding
them, I would agree. So what applications are lambdas suited to? I
think the parameterised function model is one.
What else?
More information about the Python-list
mailing list