this post was submitted on 22 May 2024
17 points (94.7% liked)
Hacker News
2169 readers
31 users here now
A mirror of Hacker News' best submissions.
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Coding happens in languages. This works much the same way as natural language, sometimes you'll speak in a way that is very clear to you and people who speak that language, but not to others.
vs
Function composition is clear to people who speak Haskell, and eliminating mutation/untracked side effects helps to keep behavior local and gives equational reasoning. You can ask your IDE what the type of sumSquares is, and immediately know without looking at the implementation that there are no side effects, and what the types are.
On the flip side, most programmers can read basic Python, the C family of languages has seen more adoption, and Python simplifies a lot of the syntax/concepts down to their most basic forms. Python tries to be the most like English, and this is both its greatest strength and weakness (English can be an abysmal language for structured data processing).
You can of course write the Haskell to look more like the Python, or the Python to look more like Haskell. But I'd say the two snippets above represent idiomatic code for those languages, and as someone who actually loves FP, I wish Python never introduced list comprehensions/generator expressions (what a lot of people would use to implement the above in Python). If you're trying to write typesafe functional code, you should just not be using Python.