You’re still limited by lambda expressions though. And in general the language is still statement based, not expression based. You can’t do a= if foo then x else y type things (except for the one-off and backwards x if foo else y; they were so close!).
It’s not. In functional languages there’s no special case like this. All if-elses are expressions. It’s far superior. For example how do you do this with Python’s if-else expression?
let x = if foo {
let y = bar();
baz();
y
} else {
z
}
foo isn’t a function, it’s a bool. But in any case, as you can see the answer is “with terrible hacks”. Python is not a functional language. It is imperative.
like everything in python, to achieve functional you must first
import functional
(not even a joke)
You’re still limited by lambda expressions though. And in general the language is still statement based, not expression based. You can’t do
a = if foo then x else y
type things (except for the one-off and backwardsx if foo else y
; they were so close!).“a = x if foo else y” is a perfectly cromulent statement!
It’s not. In functional languages there’s no special case like this. All if-elses are expressions. It’s far superior. For example how do you do this with Python’s if-else expression?
let x = if foo { let y = bar(); baz(); y } else { z }
x = foo(y:=bar(), baz(), y) or z
should work assuming foo bar and baz are functions being called?if this is setting y to the effect of bar() + running baz after, then:
x = [bar(), baz()][0] or z
might work
and if you need y to be defined for later use:
x = [(y:=bar()), baz()][0] or z
but thats from memory, not sure if that will even run as written.
if I get to a real computer I'll try that with an actual if statement instead of a bastardized ternary.
foo
isn’t a function, it’s a bool. But in any case, as you can see the answer is “with terrible hacks”. Python is not a functional language. It is imperative.Yeah, never said it was, just that if you really want to emulate that style you mostly can.