I decided for myself that it was time to plunge into the world of functional programming and try to learn Haskell.

I have already heard a lot about functional programming, about its high entry threshold. I heard that there are problems with terminology, its translation and interpretation in Russian.

At the moment, I know C ++ and Python at a basic level (about a little more than a year of commercial development in both languages ​​in total). I remember (if necessary, I can remember) many things from the higher mathematics of the university course, although it was a long time ago.

I also have a problem with the English language: I can read and translate the documentation quite freely, but only those topics that I know more or less, i.e. to expand knowledge. When the topic is completely new, I first try to read about it in Russian, to understand the essence, and then read in English, I understand quite quickly. Those. In English, I'm not zero, but not perfectly fluent.

I would like to hear:

  1. What topics from different areas: towers, computer science, programming, algorithms and data structures (I apologize for the confusion in the names of these areas, but this is also quite a controversial topic, I think most will understand me) should be fixed, learned, paid attention to, understood. The goal is to make it easier for yourself to enter functional programming. Those. I do not want to start learning Haskell, immediately seeing a bunch of words and concepts completely unknown to me there. I want to be prepared.
  2. What materials, what books, articles, perhaps you will advise forums to fulfill paragraph 1. It’s clear that it’s better to read the English original, but I already wrote that sometimes it’s hard to read something completely new in English, I would like to start with something on Russian language.
  3. According to Haskell, I found a good site, learnyouahaskell.com , heard many recommendations. After going through the preparatory stage - I want to study it. If someone advises me something better (and especially in Russian) - I will be only too happy.

Thank!

PS I hope there will be no holivar that it is better to learn some other functional language. I have stopped at Haskell for now.

Closed due to the fact that off-topic participants PashaPash ♦ , aleksandr barakin , Mstislav Pavlov , Max Mikheyenko , Visman Oct 3 '15 at 3:18 .

It seems that this question does not correspond to the subject of the site. Those who voted to close it indicated the following reason:

  • " Questionnaires are forbidden on Stack Overflow in Russian . To get an answer, rephrase your question so that it can be given an unambiguously correct answer." - PashaPash, aleksandr barakin, Mstislav Pavlov, Max Mikheyenko, Visman
If the question can be reformulated according to the rules set out in the certificate , edit it .

  • one
    if you used the Python lambda, then I think you will have no problems with studying, besides, it's all right that you chose Haskell - Specter
  • python's: lambda, map, reduce, filter, zip - I use it every day in production code, I am more or less familiar with it and saw them in Haskell (when I just looked at the manuals a bit), they apparently came from it :) But I would like to explore all this deeply. As if one of the motivations for studying the OP is that many constructions go from there to imperative languages ​​and I want to study all this there. - Goran
  • 2
    I had trouble understanding the monads. The article " monads as containers " helped. Also, besides the Learn You A Haskell, there is still a good book Real World Haskell . It is good that it does not just state the theory, but does it on solving very real practical problems. - drdaeman

3 answers 3

There is no need to know any higher mathematics for programming in Haskell and functional languages. This is a stereotype from the series that C ++ is ancient, Python is terribly slow and eats memory in gigabytes, Perl scripts are completely unreadable, PHP is written only by students of the 8th and 9th grades and so on. In fact, functional languages ​​have more in common with procedural and object-oriented than differences. You yourself will quickly understand it when you start to understand everything.

What about the materials. Learn You a Haskel good tutorial. If you need in Russian, pay attention to the Haskell language: about the benefits and harms of laziness + some links I collected in this article: the reasons why I like Haskell . Pay attention to the blog darkus - there are organized contests on functional programming once a month, which will help you hone your mastery of Haskell. From the forums I can offer functional and logical languages .

  • 3
    About the "no need to know," so correctly say "knowledge is not mandatory." And to know mathematics is desirable when programming in any language (php and 1C is not an exception). - alexlz
  • Programming on haskel, not knowing algebra, is how to create games with the help of highly abstracted functions of some super framework, and at the same time not be able to make graphics using operations on vectors and matrices. You can, but why? On Haskel write for the sake of art. To write on it not for the sake of inner beauty is a waste of time. This smacks of ostentatious elitism, when people want not to really understand Haskel, but to tell everyone that they understand it. - typemoon September

They came not from him, but from common ancestors. There are books on Haskell, among them, for sure there are translations, there are books in Russian, for example Dushkina. As for lambda and combinatorial ploys, I would recommend J. Harrison Introduction to Functional Programming, though there ML, not haskell (the project of translating it into Russian is funprog-ru ). In TMR-13 ( The Monad.Reader Issue 13 ), the article Typeclassopedia (for understanding type classes). From the forums - there is on the rsdn forum on declarative programming.

    What topics from different areas: towers, informatics, programming, algorithms and data structures (I apologize for the confusion in the names of these areas, but this is also quite a controversial topic, I think most will understand me) should be fixed, learned, paid attention, figured out.

    You can pay attention to the " theory of categories for programmers, " although this is not necessary.

    With regards to learning the language itself, https://anton-k.imtqy.com/ru-haskell-book/book/toc.html looks like a good guide.

    In addition to the materials mentioned in other answers, I advise you to pay attention to the remarkable article: “ What I Wish I Knew When Learning Haskell ”, which deals with many applied aspects of the language.