News for hackers. Stuff that matters.
Re:Toolz: A functional standard library for Python by rustyminnow on Thursday January 21, 2021 @02:44PM (#25863220)
Like others have said:

- 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...

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.