44
submitted 6 months ago by mao@lemmy.sdf.org to c/python@programming.dev

Neato

you are viewing a single comment's thread
view the rest of the comments
[-] FizzyOrange@programming.dev 8 points 6 months ago

I don't think I would call this functional. Python is decidedly not at all functional - there's no way to declare arbitrary functions inline, no chaining of map/filter etc.

But the static types are definitely welcome. I didn't know about the type keyword. Apparently it makes it support forward references.

[-] sus@programming.dev 4 points 6 months ago

like everything in python, to achieve functional you must first import functional

(not even a joke)

[-] FizzyOrange@programming.dev 3 points 6 months ago* (last edited 6 months ago)

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

[-] nxdefiant@startrek.website 1 points 6 months ago

"a = x if foo else y" is a perfectly cromulent statement!

[-] FizzyOrange@programming.dev 2 points 6 months ago

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
}
[-] nxdefiant@startrek.website 1 points 6 months ago

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.
[-] FizzyOrange@programming.dev 2 points 6 months ago

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.

[-] nxdefiant@startrek.website 0 points 6 months ago

Yeah, never said it was, just that if you really want to emulate that style you mostly can.

[-] wewbull@feddit.uk 2 points 6 months ago

Does it have higher-order functions? Yes, therefore you can use it to do functional programming.

Everything else is syntactic sugar.

[-] FizzyOrange@programming.dev 4 points 6 months ago

Functional programming doesn't just mean higher order functions. There's a range of other features that it implies.

this post was submitted on 24 May 2024
44 points (97.8% liked)

Python

6400 readers
24 users here now

Welcome to the Python community on the programming.dev Lemmy instance!

📅 Events

PastNovember 2023

October 2023

July 2023

August 2023

September 2023

🐍 Python project:
💓 Python Community:
✨ Python Ecosystem:
🌌 Fediverse
Communities
Projects
Feeds

founded 1 year ago
MODERATORS