Aktuelles Projekt: "Function definitions as expressions."
Im Klartext heißt das: Ich will mehrzeilige Lambdas. Guido hat dazu mal gesagt, das es technisch möglich aber für seinen Geschmack zu umständlich sei. ich will das aber trotzdem. Darum!

Mein momentaner Stand ist dieser:
Regel: Die erste nicht-leere Zeile eines Blocks gilt als Referenz für die Einrückung des gesamten Blocks. Ein Block endet vor der ersten nicht-leeren Zeile, die weniger Eingerückt ist als die Referenz-Zeile, oder vor einer schließenden Klammer, die nicht innerhalb des Blockes geöffnet wurde, oder am Ende der Datei.
Beginnt ein Block nicht mit einem NEWLINE, endet der Block nach genau einem Ausdruck. Das sind dann single-line Lambdas. Wie bei Python wird der Wert des Ausdrucks zurück gegeben, als ob davor ein "return" stünde.
Beispiele::
Code: Alles auswählen
func = def(a, b):
return a+b
func = def(a, b): a+b
map(iterable, def(s):
return s.upper())
list_of_functions = [
def(a):
return a*2
, def(b):
return b*4
, def(c): c*8
]