https://leanpub.com/outsidefp вот ещё кто-то пишет книгу "типизированное ФП для людей со стороны".
Почитал я "About the Book" и как-то "взгрустнулось". Мне, как человеку, достаточно испорченному знакомством с #haskell/#elm/#purescript, немного обидно читать такое такое (тут мейнстрим противопоставляется типизированным ФП-языкам):
> By "mainstream", I mean:
> - Applications that require only "ordinary" reliability.
не говоря уж о
> - Applications that work in messy domains.
> - Applications that are continuously growing new features.
Вот только это правда. Обидная, но правда.
И мне с моим любимым Haskell уже даже морально тяжело делать "просто достаточно надёжные" приложения, а ведь надо ещё и компилятор убедить в том, что "пока и так сойдёт". Заметьте, я не утверждаю, что так делать в Haskell нельзя - сделать нарочито хуже, конечно же,
можно. Но не хочется! А значит я буду стараться делать сразу настолько хорошо, насколько смогу.
Я вообще склонен считать, что в (или через) Haskell идут перфекционисты - тут же столько простора "сделать наконец нормально или даже лучше"! И overengineering в хаскельном коде встречается не реже, чем в коде на мейнстримовых языках (тут многие вспомнят пресловутые "абстрактные фабрики синглтонов"), только тут принято себя оправдывать, что, мол, "зато более корректно и категорно!".
Даже сама выразительность языка вместе с мощностью системы типов приучает хотеть этой самой выразительности и мощи - и чем больше выразительность и мощь, тем приятнее! Да, задачи бизнеса тоже решаются, но далеко не всегда только лишь "достаточно хорошо".
И более того, те, кто старается "просто делать что-то", и уж тем более -
"делать что-то просто", считаются ненастоящими программистами, странными чуваками и проч. Ведь простое решение не выглядит, как тема для публикации с кучей формул, не "движет науку в сторону светлого будущего", и просто "недостаточно красиво". Например, я много раз видел, как в чатах критикуют того же Габриэля Гонзалеса за то, что он пишет слишком простые - с чьей-то точки зрения - библиотеки или статьи.
Может быть сий неготивизм по отношению к простым решениям и вообще к упрощению, это всего лишь боязнь того, что в язык придут люди, которые смогут с помощью гонзалесовой Turtle писать простые скрипты, не парясь по поводу зависимых типов, рекурсивных схем, профункторов, и прочего "именно того, ради чего вообще в Хаскель стоило идти"? "Илитизм" какой-то, право слово.
Другой пример. Новичок приходит в Reddit и спрашивает "А какую либу мне выбрать, чтобы сделать простой web-сервис - Scotty или Spock?" (очень частая ситуация). Реалистичный вариант цепочки комментариев будет выглядеть так:
- Бери Servant - только Servant есть TRUE!
- (кто-то робко) Но у сёрванта порог вхождения выше и сообщения об ошибках непонятнее...
- У меня всё работает! И там ваще всё просто (если ты достаточно хорош)!
После этого новичок идет пробовать Servant, видит список требуемых расширений, или просто первое сообщение об ошибке и уходит в ужасе/печали - и хорошо, если не из ФП вообще, а только из Haskell. Одним потенциальным хаскелистом меньше. И какова будет реакция аудитории - особенно русскоязычной - "одним слабаком и неосилятором меньше!".
Смотришь на это и понимаешь, почему кто-то убегает из Haskell с "труёвым Servant" в "скучную и нетайпсейфную" Clojure, или из PureScript с его профункторными линзами и FRP на Halogen в "скучный" Elm. А ведь, на Haskell можно писать и просто (типа вебчика на Scotty)! Но простые решения будут порицаться, или как минимум будут приняты со снисхождением - это демотивирует. И смешные статьи или картинки про Haskell не на пустом месте появляются - есть благодатная почва.
Меня лично радует лишь то, что я даже на своём невысоком уровне умения "в настоящий Haskell" могу делать на оном то, что мне интересно - пусть даже это никого не впечатлит. И я люблю этот язык, пусть и "не благодаря, а вопреки". И быть может мне повезло, что я учил язык, варясь в собственном соку и читая "слишком простую" «Learn You a Haskell For Great Good» - некому было отбить у меня желание к изучению.