Evaluation strategy
When and whether an expression gets evaluated, and in what order. logic-programming flagged this as the axis the spoke’s original four missed; haskell is the source that makes it general rather than a Prolog peculiarity.
Strict, by default and unremarked. c, go, rust, php, nodejs, clojure, elixir and erlang all evaluate a function’s arguments before the call. None of their pages says so. It is the corpus’s clearest example of a real decision that goes unmentioned because every competitor made it too.
Lazy. haskell does not evaluate arguments until a value is needed. The consequences are
structural rather than performance-related: control structures can be ordinary functions (if needs no
special form if the branches are not evaluated yet), infinite data structures are ordinary values, and
the compiler can fuse pipelines because nothing has committed to intermediate results. The cost is
that the moment a computation happens stops being visible in the source.
Resolution. prolog does not evaluate expressions at all in this sense; it searches for a proof, by unification and backtracking under SLD resolution. Asking whether Prolog is strict is a category error, which is exactly why the corpus’s imperative-and-functional axes had nothing to say about it.
Where it connects
Laziness and purity are a package. Deferring evaluation is only safe if the deferred thing cannot change the world in the meantime, which is why haskell‘s page argues purity, immutability and laziness as one commitment rather than three features. clojure takes the immutability half without the laziness (its lazy sequences are a facility, not the evaluation rule), and that is the sharpest available demonstration that the two are separable.
Against type-system: a strict language can leave effects untracked because you can see where they happen. A lazy one cannot, so the type system has to carry the information the evaluation order no longer shows. Haskell’s types are load-bearing partly because its evaluation is lazy.
Open
No source here measures what laziness costs — space leaks, unpredictable residency and debugging are the standard complaints, and haskell.org mentions none of them. This is growth edge 1’s shape again: a first-party page states a design commitment and nothing checks the bill.
Related
haskell · prolog · logic-programming · type-system · clojure · programming-language · synthesis