Недавно мне пришло письмо от одного из посетителей с просьбой помочь решить небольшую проблему с OCaml‘ом. И как-то между делом он поинтересовался, почему я отказался от OCaml в пользу Haskell. После небольшого раздумья я ответил, что это сложный вопрос и что я не готов вот так сразу на него ответить, а также пообещал когда-нибудь написать пост на эту тему. И вот, я наконец-то собрал свои мысли в кучку.

В прошлые выходные прошел очередной конкурс по функциональному программированию от Darkus’а. Поразмыслив, я решил принять в нем участие с целью немного попрактиковаться в изучаемом мною эзотерическом и никому не нужном языке программирования OCaml. В результате занял четвертое место.

Помните, как в крайнем посте я обмолвился, что в OCaml есть генераторы списков, но для их получения нужно произвести дополнительные действия, и в результате использовал указатель на голову списка с циклами for? Настало время выяснить, что это за дополнительные действия такие.

Все-таки есть основания полагать, что Haskell местами излишне сложен и несколько оторван от действительности. Когда речь заходит о реальной разработке, возникает желание писать на языке попроще, где по умолчанию не используются ленивые вычисления, где при необходимости можно прибегнуть к ссылкам, наследованию, побочным эффектам и тп. И чтобы никаких матанов типа монад, аппликативных функторов, iteratees и застежек. Примерно как в OCaml.