3 ms·
Great explanation. Just a small point though, > "lazy" is the opposite of "imperative." should be: "lazy" is the opposite of "strict" or "eager". "Imperative"
by ankrgyl 15y ago
Great explanation. Just a small point though,
> "lazy" is the opposite of "imperative."
should be: "lazy" is the opposite of "strict" or "eager". "Imperative", in this context, is the opposite of "functional".
- chc 15y agoIt's basically impossible to have a lazy imperative language, though, because "a sequence of statements" is the definition of an imperative program, and laziness leaves the ordering of that sequence undefined.
- ankrgyl 15y agoScala pulls it off. Here is one example: http://www.bluishcoder.co.nz/2006/07/scala-futures-and-lazy-evaluation.html http://www.bluishcoder.co.nz/2006/07/scala-futures-and-lazy-...
- chc 15y agoI don't mean to split hairs, but Scala isn't a lazily evaluated language — it's a strict language that allows optional lazy evaluation, and AFAIK it only really works well if you're programming Scala in a more or less functional style. I'm pretty sure Scala's lazy values still lead to unpredictable behavior if you lazy up something that has side effects.