Hacker News new | past | comments | ask | show | jobs | submit login

I prefer the laziness of PHP and Python. JavaScript threw me off with its eagerness. Took a while getting used to.



In what ways are PHP and Python more lazy than JS?


I can't speak for PHP, but in Python (version 3 at least), a lot of the built-in functions that return iterators, like `map` and `range`, are lazy.


Also in python 2.7 (and I assume py3k stuff too) conditionals also have lazy evaluation if you have the statement:

if False and (fibonacci(1000)/fibonacci(1000)):

  print "Nope"
It will immediately evaluate to False and pring "Nope" rather than checking the (fibonacci(1000)/fibonacci(1000)) portion of the conditional.

EDIT: Side note, is there a shortcut for displaying code snippets within HN posts? Extra returns (what I usually use for clarification by formatting) do not display very well.


Javascript will short-circuit in && and the ternary operator, too. But that's not really the same as lazy evaluation, which both is more general and happens in a different context; ES6 generators, for example, are lazy, which means that any sequence function in which one is used is lazy as well.

Indent your code snippets with a minimum of four spaces and they will be rendered as preformatted, monospaced text. Vertically adjacent lines thus indented will be rendered as a single block.


That's not necessarily "lazy" in the normal programming context, it's specifically short-circuit evaluation in Python. Although as Wikipedia points out: "In languages that use lazy evaluation by default (like Haskell), all functions are effectively "short-circuit", and special short-circuit operators are unnecessary."


PHP too.

(if isset($foo) && $foo == 14)

If $foo is not set the second boolean expression is not evaluated (short circuit evaluation).

In fact, checking if isset followed by another boolean expression is very idiomatic in PHP.


I think there is a bug in that code. It will not print Nope.


You are right. I meant immediately evaluate False and not print Nope.




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

Search: