On Tue, 10 Mar 2009 03:43:03 am average wrote:
While there are several complaining that all this can be done with a def, there's an critical distinction being overlooked. Passing around code blocks is a very different style of programming that Python or most languages like it have ever experimented with. The programming art itself hasn't really even explored the different range of thinking this style of programming opens up. Where as most function definitions are verb-like, this would be a noun-like definition. Akin perhaps to the difference between a hormone in the body and a neurotransmitter, respectively.Setting it off with a new keyword, or expanding the use of lambda is really a mandatory way of signifying this INTENT.
Marcos, I'm afraid that I don't understand your analogy, or your argument. An anonymous code block is just like a named function, except it doesn't have a name. Can you explain why: func(named_function) is radically different from: func(multi-line-code-block-without-the-name) please? We can already do this in Python, using functions made up of a single expression: func(lambda: expr) I use this frequently, because it is sometimes convenient, but there is nothing I can do with a lambda that I can't do with a named function. I don't see that introducing multi-lined lambdas will change that. I'm trying to keep an open-mind here, but I also don't understand your analogy. In what way are named functions like neurotransmitters, or hormones? Which one is supposed to be verb-like and which one is noun-like? What does that even mean? -- Steven D'Aprano