Сегодня будет первый пост в новом формате:

  1. Нормальные markdown-ссылки
  2. Публикация постов в обед, а не когда все спят.

Ну и, как обещал, тема сегодня будет масштабная. Поговорим про функциональное программирование. А именно про функторы и монады.

  1. Функторы, аппликативные функторы и монады в картинках
  2. Зачем нужны все эти функторы и монады?

Названия у статей говорящие, и добавить нечего. Главное, не забывайте заглядывать в комментарии, к таким статьям всегда много познавательных холиваров.

Ну ладно, я до сих пор не сказал ни слова про Haskell. На самом деле, все эти концепции наиболее ярко выражены именно там, т.к. лежат в основе философии самого языка. Но ему пост будет посвящен чуть позже. А пока, по традиции, реализация на Python: OSlash. Примечательна эта библиотека тем, что имеет в своей wiki несколько интересных статей:

  1. Functors, Applicatives, And Monads In Pictures — форк оригинальной статьи, перевод которой в начале этого поста, но с примерами на OSlash.
  2. Three Useful Monads — следующая статья из этой серии, также с примерами на OSlash.

Ну и, конечно же, важный дисклеймер: не надо применять это в питоне. Вот серьезно. OSlash — не более, чем учебный познавательный пример. О полезных функциональных библиотеках для Python я уже писал ранее, а также про это будет ещё два поста. А вот функторы и монады - не надо. В то же время очень рекомендую разобраться в этом всём, чтобы расширить сознание, сломать мозг и научиться смотреть на код немного по другому (с потаённым страхом, ага).

Берегите себя и свои программы)