Penguin
Note: You are viewing an old revision of this page. View the current version.

Strict evaluation is an approach that a ProgrammingLanguage can take to evaluating expressions. With strict evaluation the values of sub-expressions are worked out before passing them to operators, the values of arguments are worked out before passing them to functions.

Strict evaluation means you can predict the order that expressions will be evaluated in. That makes other language fetures like reassignable variables and a conventional I/O system practical.

If you've used a an ImperativeLanguage? like C or Java, then this is just what you are used to.

The other approach to evaluation is LazyEvaluation.

A functions is passed whole expressions as parameters and do not evaluate them until it need their values. (I won't go into why you'd want that, but there are good reasons.) Haskell's main semantic difference from ML is that is it is lazy. (If you enjoyed Haskell programming at WaikatoUniversity but because exasperated with "monads" and working out convoluted ways to make your programs preserve state, ML may be the thing for you.)''