2016-08-29 9 views
1
(head . map f) xs = (f . head) xs 

Он работает для каждого списка xs, когда f строго. Может ли кто-нибудь дать мне пример, почему с нестрогим f он не работает?Сопоставление строгой и ленивой функции

+0

Откуда у вас был этот вопрос? – dfeuer

+0

Я готовлюсь к экзамену, и это вопрос, который был на предыдущем – beja

ответ

4

Возьмем нестандартную функцию 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 =() 

что и требовалось доказать