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)