Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

It is still crazy to me that in Python

    ('' or 10) == 10 # True
That's like making the universe crazier one electron at a time.

But yes, it's just about having the right abstractions. What's nice about the Haskell solution is that the right abstractions make the code much nicer (to my eye).



I honestly don't understand why that's crazy. Empty string evaluates as falsey, so the "or" picks the 10, which is obviously equal to 10. Or am I missing something?


It just seems like a bad choice. The empty string being falsey is... very arbitrary to me. It seems like it's strictly a perl legacy thing that should be (but cannot be) reconsidered.

About as far as I am willing to go is nil punning.


FWIW - it has been reconsidered in Ruby - all values are truthy except nil and false.


> The empty string being falsey is... very arbitrary to me.

It's extremely useful in a lot of contexts. The basic logic is that an empty string is an empty container, and empty containers are false, so you can test for them more easily.




Consider applying for YC's Winter 2027 batch! Applications are open till November 2.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: