Hacker News new | ask | show | jobs
by jonesetc 4530 days ago
> I hate python with a passion

Genuine curiosity as to why. I've heard arguments against using it because of speed and type-issues, but you're using a derived language that doesn't change either of those things. I've never heard anyone just blatantly dislike the language itself.

2 comments

I hate significant whitespace, and the syntax of Python (not enough parens; allows crazy oneline hacks with comprehension, yet still forces indentation otherwise; blindly following pep8 often results in horrible mess of a code, etc).

Hy gets rid of both the significant whitespace, and the syntax too. Yet, allows me to have bidirectional interop, so people using my modules are none the wiser, as long as I make a little effort to remain python compatible (macros used only internally, and not exposed in the API, and using valid python names for functions and other stuff).

Significant whitespace kind of makes sense in general: humans make heavy use of whitespace to parse code visually, which means that when it isn't significant, the machine and the human are essentially using different parsing algorithms.

As for "getting rid of the syntax", I think that's a bit disingenuous. Much like Clojure, Hy cheats by collapsing nesting:

    (for (i (range 1 10)
          j (range 1 10))
        ...)

    {1 2 3 4} ==> {1: 2, 3: 4}
I mean, this isn't just getting rid of syntax. It's getting rid of structure. As a purist, my stance is that you either keep the structure (`{(1 2) (3 4)}` or you add syntax (`{1 2, 3 4}`, and unlike Clojure, make the comma significant). What you don't do is tuck syntactic information in the parity of the rank of an argument.
Understandable, I always forget about people not liking the whitespace requirements. You and I fight on different sides of the whitespace-brackets/parens war. I definitely see the disliking of comprehensions with the abuse they get, but with a little bit of restraint I find them to be one of the most useful and clean feature of python.

EDIT: Thanks for the perspective.

Inconsistency? Sometimes Python feel (i think) like an OOP-lang, other times like an FP-lang.