о ненависти к монадам

К апликативным функторам тоже маловато претензий, хотя казалось бы. Ведь монада (по верованию хаскельщиков) - это апликативный функтор.
Возможно, дело в слове "функтор". Никто еще не выступал с критикой функторов. Мол, вы, функциональщики, может, и молодцы, но категория функторов не является локально малой. Или, скажем, раз в хаскеле ковариантности нету (да и в джаве ее маловато), то функторы в энтерпрайзе не нужны. Нет, ничо, терпят.
Хотя даже поклонники монад начинают частенько плеваться и ругаться, если им скажешь про сопряженные функторы. И еще что интересно, вот монада; к ней прилагается категория Клейсли; ее любят. А категорию Эйленберга-Мура не любят, и даже над теми, кто ее регулярно но бессознательно использует (
username = if
(database.get("username") == null) "" else
database.get("username")
), смеются как над лохами. Хотя эти
две категории - просто два крайних объекта в одной душевной
категории, образованной этой монадой.Ну ладно, "простые программисты" (это для нас они простые) у себя в вузе на последнем курсе в Стэнфорде узнают, что функтор - это просто функция, которая беред функцию и возвращает функцию (интересно, что получится, если ее такую применить к самой себе, будет ли она по-прежнему брать функцию и возвращать функцию, или уже сломается?); в результате чего у них половина дизайн патернов превращается в какой-нибудь функтор, чем они и пугают робких выпускников Аризонского Госуниверситета (в Аризоне функторы не водятся).
Но где-то должна быть такая граница, что до нее они не боятся, а после уже боятся.
Или, может, свободная монада как раз будет этакой тайной тропой через границу, отличающую познаваемое от непознаваемого? Хз.
Комонаду же точно почти все боятся. Хотя (открою секрет) у каждой монады есть своя комонада (и у каждой комонады - своя монада).
Тот же Reader
|
</> |