β² 45 βΌ Statically Typed Functional Programming with Python 3.12 (wickstrom.tech) submitted 2 years ago by mao@lemmy.sdf.org to c/python@programming.dev 12 comments fedilink hide all child comments Neato
[β] nxdefiant@startrek.website 2 points 2 years ago (1 child) "a = x if foo else y" is a perfectly cromulent statement! permalink fedilink source parent hideshow 2 child comments replies: [β] FizzyOrange@programming.dev 2 points 2 years ago (1 child) 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 } permalink fedilink source parent hideshow 2 child comments replies: [β] nxdefiant@startrek.website 1 point 2 years ago (1 child) 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. permalink fedilink source parent hideshow 2 child comments replies: [β] FizzyOrange@programming.dev 2 points 2 years ago (1 child) 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. permalink fedilink source parent hideshow 2 child comments replies: [β] nxdefiant@startrek.website 2 points 2 years ago Yeah, never said it was, just that if you really want to emulate that style you mostly can. permalink fedilink source parent
[β] FizzyOrange@programming.dev 2 points 2 years ago (1 child) 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 } permalink fedilink source parent hideshow 2 child comments replies: [β] nxdefiant@startrek.website 1 point 2 years ago (1 child) 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. permalink fedilink source parent hideshow 2 child comments replies: [β] FizzyOrange@programming.dev 2 points 2 years ago (1 child) 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. permalink fedilink source parent hideshow 2 child comments replies: [β] nxdefiant@startrek.website 2 points 2 years ago Yeah, never said it was, just that if you really want to emulate that style you mostly can. permalink fedilink source parent
[β] nxdefiant@startrek.website 1 point 2 years ago (1 child) 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. permalink fedilink source parent hideshow 2 child comments replies: [β] FizzyOrange@programming.dev 2 points 2 years ago (1 child) 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. permalink fedilink source parent hideshow 2 child comments replies: [β] nxdefiant@startrek.website 2 points 2 years ago Yeah, never said it was, just that if you really want to emulate that style you mostly can. permalink fedilink source parent
[β] FizzyOrange@programming.dev 2 points 2 years ago (1 child) 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. permalink fedilink source parent hideshow 2 child comments replies: [β] nxdefiant@startrek.website 2 points 2 years ago Yeah, never said it was, just that if you really want to emulate that style you mostly can. permalink fedilink source parent
[β] nxdefiant@startrek.website 2 points 2 years ago Yeah, never said it was, just that if you really want to emulate that style you mostly can. permalink fedilink source parent