lazyterminology and the
normal-orderterminology is somewhat fuzzy. Generally,
lazyrefers to the mechanisms of particular evaluators, while
normal-orderrefers to the semantics of languages, independent of any particular evaluation strategy. But this is not a hard-and-fast distinction, and the two terminologies are often used interchangeably.
non-strictterminology means essentially the same thing as
normal-order,except that it refers to individual functions and arguments rather than to the language as a whole. At a conference on programming languages you might hear someone say,
The normal-order language Hassle has certain strict primitives. Other functions take their arguments by lazy evaluation.