Re:Toolz: A functional standard library for Python
by seertaak on Thursday January 21, 2021 @02:56PM
(#25863390)
Exactly. Kind of an own-goal too, from none other than ex-BDFL. While not totally obvious, it's not impossible to widen the syntax to allow multi-line lambdas, you just need to ditch the stack-based lexer-integrated whitespace sensitivity behaviour.
Re:Toolz: A functional standard library for Python
by diarrhea on Thursday January 21, 2021 @04:35PM
(#25864599)
This works for conditionals:
In [4]: f = lambda x: "Yes" if x else "No"
In [5]: f(True)
Out[5]: 'Yes'
In [6]: f(False)
Out[6]: 'No'
It's Python's version of ternary operators, so not sure if that counts as a "true" conditional; but it is one.Loops don't work, but list comprehensions do, and they are definitely the way to go here. Multi-line loops deserve a `def`.
Re:Toolz: A functional standard library for Python
by dragonwriter on Thursday January 21, 2021 @06:21PM
(#25866037)
> Can only use expressions, not statements. E.g. `print`s, loops, conditionals are out.
print is a function (and thus can be used in expressions)
python has conditional expressions (<true-val> if <cond> else <false-val>)
loops are a limitation, though comprehensions, map(), functools.reduce(), and the itertools module can allow lots of looping functionality in an expression.
Re:Toolz: A functional standard library for Python
by heavyset_go on Thursday January 21, 2021 @02:50PM
(#25863298)
print() is a function now and you can use it with lambdas.
Re:Toolz: A functional standard library for Python
by pmiller2 on Thursday January 21, 2021 @09:08PM
(#25867376)
Even in Python 2, you can do something like this:
println = lambda s: sys.stdout.write(s + '\n')
Not that it really makes things much better, but, at least it shows you can do it.
Re:Toolz: A functional standard library for Python
by bobbylarrybobby on Thursday January 21, 2021 @02:46PM
(#25863236)
The lambda calculus is Turing complete, so in theory, Python’s lambdas should suffice...
Re:Toolz: A functional standard library for Python
by jolux on Thursday January 21, 2021 @03:01PM
(#25863459)
Turing completeness is completely unrelated to whether or not anonymous functions are easy to use in Python.
Re:Toolz: A functional standard library for Python
by zelphirkalt on Thursday January 21, 2021 @02:59PM
(#25863421)
Which of course says nothing about usability and readability.
Re:Toolz: A functional standard library for Python
by rustyminnow on Thursday January 21, 2021 @02:59PM
(#25863415)
I mean... You're right. They suffice. They're just less friendly (i.e. useful) than lambdas in other languages.
- Can only have one line
- Can only use expressions, not statements. E.g. `print`s, loops, conditionals are out.
- Overall just kinda clunky
Here's an SO post about lambdas where the answer is "Use def instead." https://stackoverflow.com/questions/14843777/how-to-write-py...