I'm a big fan of taking advantage of laziness and think it's drastically underrated. It's incredibly expressive and it's what really makes Haskell more than just an ML variant.
I gave a slightly rough talk about "Thinking with Laziness"[1] which tries to capture how expressive it can be. I'm a big fan and sad that so many people are willing to categorically dismiss it as a wart in Haskell.
I prefer strict by default, despite liking fancy typed languages. It's easy to build lazy on top of strict (as long as functions are values), but impossible to build strict on top of lazy. Consistency and reasonability are important, and the runtime performance of Haskell doesn't have either. I currently use Scala and have high hopes for Idris.
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."
I gave a slightly rough talk about "Thinking with Laziness"[1] which tries to capture how expressive it can be. I'm a big fan and sad that so many people are willing to categorically dismiss it as a wart in Haskell.
[1]: https://begriffs.com/posts/2015-06-17-thinking-with-laziness...