Non-strict semantics
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Non-strict semantics means that a function can have a definite value although its argument is undefined. E.g. in Haskell you get
Prelude> True || undefined
True
You will not be able to define a function or
say in C which returns something if you pass an undefined value (e.g. one that is the result of an infinite loop). In fact, in or(true,infinite_loop())
, the code of or
will never be run. In Haskell it is possible because you Call by demand.
See also
- Jonathan Cast in Haskell Cafe about What is the role of $! ?