Какие книги почитать по функциональному программированию?
===========================================================

 Есть необходимость познакомиться с функциональной парадигмой для расширения кругозора. Конкретной цели изучить какой то язык нет, просто научиться писать код в функциональном стиле, понять общие принципы, поэтому, какой язык посоветуете для того кто вообще не шарит в функ.парадигме, с какого лучше начать?  

С каких книг на русском желательно стоит начать знакомство с функциональным программированием?  

Мельком слышал только об Erlang и Haskell. 

 Восприятие языка - это вопрос индивидуальный. То, что далось легко мне, может показаться сложным вам. И наоборот. Но личным опытом поделиться могу:  
  

У Haskell есть веское, на мой взгляд, преимущество - программы компилируются в бинарники. А минус в том, что я никогда не слышал о сколько-нибудь значимых случаях реального применения Haskell. Для восприятия он мне показался очень тяжёлым, литературу по нему можно использовать как снотворное.  
  

Самой простой для изучения мне показалась Scala. Мультипарадигменность языка обеспечивает более лёгкое вхождение из императивного стиля программирования. Есть замечательный учебник "Scala для нетерпеливых" Кея Хорстманна. К тому же, вакансии на scala-программистов есть даже в РФ. Минусом для меня послужила как раз мультипарадигменность. Нет вызова, нет настоящей мозголомки, способствующей перекраиванию мышления.   
  

Erlang интересный, чисто функциональный, широко применяются. Но чувствуется некоторая незаконченность языка и отовсюду выпирает телекоммуникационное наследие. Есть неплохой учебник на русском Чезарини и Томпсона "Программирование в Erlang". Плюс, сейчас появился Elixir. Слышал, что он хорош и, что в нём решили все проблемы Erlang, но сам не щупал.  
  

Я в результате остановился на Clojure. Кложа сложная, но она реально учит думать по-новому. По ней много книг. В том числе есть на русском - "Программирование на Clojure" Эмерика. Хорошая документация, большое и дружелюбное сообщество. В реальном мире применяется чаще, чем Haskell, но реже Scala или Erlang. 

 Начинать изучение функциональщины, я считаю, стоит с Haskell. Функциональный код можно писать и на Scala, и даже на JS, но Haskell с точки зрения изучения ФП хорош тем, что он навязывает функциональный стиль, так что не будет соблазна решить задачу в привычном императивном стиле.  
  

Начать можно с лекций Дениса Москвина по лямбда-исчислению:  
  
1. <https://youtu.be/7BPQ-gpXKt4>
2. <https://youtu.be/nyulPOcDLGM>
3. <https://youtu.be/S-mqZrmUUqU>

  
  

Конкретно по Haskell могу посоветовать [книгу Антона Холомьёва](https://anton-k.github.io/ru-haskell-book/book/home.html). 

 Сам год назад задавался подобным вопросом, книги прочел по эликсиру, эрлангу, окамлу и хаскелю. И только в книге по хаскелю первычной целью было объяснить функциональный подход, и только потом язык. Очень легко читается - <https://www.ozon.ru/context/detail/id/8696277/> 

 Касаемо Эрланга.  
  

Изучай эрланг во имя добра. Дмкпресс.  
  

Для вводного достаточно.  
  

Что касается эрланга и хаскеля - это примерно как пхп и сиплюсплюс в обычном мире. Выбирайте что вам ближе. 

 Как варианты:  
1. Scheme, по классической книге [Структура и Интерпретация Компьютерных Программ](https://www.ozon.ru/context/detail/id/5322055/)

 

 Есть [курс](http://www.intuit.ru/studies/courses/471/327/info) Дмитрия Сошникова на Интуите. Хотя он голосует за F#, но мне больше понравился Haskell. 

 Для полноценного изучения надо ничинать с Haskell (или *ML, но по ним и информации меньше, и не все там так просто, как может показаться).  

Если просто познакомиться и есть опыт фронтенда, то можно начать с [ELM](http://elm-lang.org/).