Отображение строгой или ленивой функции
(head . map f) xs = (f . head) xs
Это работает для каждого списка xs, когда f строгое. Кто-нибудь может дать мне пример, почему с нестрогим f это не работает?
1 ответ
Давайте возьмем не строгую функцию f = const ()
, а также xs = undefined
, В этом случае мы имеем
map f undefined = undefined
но
f undefined = ()
так что
(head . map f) undefined = head (map f undefined) = head undefined = undefined
но
(f . head) undefined = f (head undefined) = f undefined = ()
QED