Отображение строгой или ленивой функции

(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

Другие вопросы по тегам