Определение Haskell говорит:
Выражение в слабой форме головы (WHNF), если оно равно:
- конструктор (в конечном итоге применяется к аргументам), например True, Just (квадрат 42) или (:) 1
- встроенная функция применяется к слишком маленьким аргументам (возможно, к ней не относится), например (+) 2 или sqrt.
- или выражение lambda abstraction\x → .
Почему встроенные функции получают специальное лечение? Согласно исчислению лямбда, нет никакой разницы между частично примененной функцией и любой другой функцией, потому что в конце мы имеем только одну функцию аргумента.