Source : Free On-Line Dictionary of Computing
head-strict
A head-strict function will not necessarily evaluate
every {cons} cell of its (list) argument, but whenever it does
evaluate a cons cell it will also evaluate the element in the
head of that cell. An example of a head-strict function is
beforeZero :: [Int] -> [Int]
beforeZero [] = []
beforeZero (0:xs) = []
beforeZero (x:xs) = x : beforeZero xs
which returns a list up to the first zero.
This pattern of evaluation is important because it is common
in functions which operate on a list of inputs.
See also {tail-strict}, {hyperstrict}.
(1995-05-11)