deniok: (Default)
deniok ([personal profile] deniok) wrote2012-04-19 09:59 pm

Хорошо ли вы знаете законы аппликативных функторов?

Напишите представителя класса типов Applicative, для которого выполнялись бы законы Identity и Homomorphism:
pure id <*> u = u
pure u <*> pure x = pure (u x)
но не выполнялся бы законы Composition и/или Interchange:
pure (.) <*> u <*> v <*> x = u <*> (v <*> x)
u <*> pure x = pure ($ x) <*> u


UPD. Ну и по ходу дела возникли бонусные вопросы: написать такого представителя, чтобы не выполнялся (a) только Composition; (b) только Interchange.

[identity profile] migmit.livejournal.com 2012-04-20 10:20 am (UTC)(link)
Блин, в девятой строчке id пропустил.

[identity profile] migmit.livejournal.com 2012-04-20 11:12 am (UTC)(link)
Дважды блин, в предпоследней строчке должно быть "B True False 0"

[identity profile] deni-ok.livejournal.com 2012-04-20 11:19 am (UTC)(link)
Вот да, я сижу, думаю, что же результат двух последних выкладок значит :)