Ответы пользователя по тегу Haskell
  • Какие книги почитать по функциональному программированию?

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

    Начать можно с лекций Дениса Москвина по лямбда-исчислению:

    1. https://youtu.be/7BPQ-gpXKt4
    2. https://youtu.be/nyulPOcDLGM
    3. https://youtu.be/S-mqZrmUUqU


    Конкретно по Haskell могу посоветовать книгу Антона Холомьёва.
    Ответ написан
    3 комментария
  • Какая теоретическая база нужна, чтобы заняться функциональным программированием на Haskell?

    Для [Haskell] вроде как нужна большая теоретическая база
    Это не совсем так. Вот Вы когда сдачу в магазине пересчитываете, Вы вряд ли задумываетесь о том, что множества, используемые Вами для пересчёта мелочи (множество натуральных чисел, целых чисел и т. д.) с заданными на этих множествах операциями (сложение, умножение и т. д.) образуют различные алгебраические структуры (всякие там кольца, полугруппы, поля и прочее). Более того, даже если бы Вы об этом задумывались, это бы ну никак не помогало посчитать сдачу.

    С теоретической безой Haskell'а почти также — Haskell активно использует понятия из теории категорий (категории, стрелки, монады, функторы и т. д.), но для использования этих понятий в рамках Haskell достаточно (по крайней мере на первых порах) рассматривать их просто как ФП-паттерны (по аналогии с ООП-паттернами, такими как фасад, синглтон, адаптер и вот это вот всё). Так, монада — просто тип, имеющий определённый набор "методов" (выражаясь в терминах ООП), удовлетворяющих определённым требованиям.

    В общем, чтобы начать учить Haskell, ящитаю, особого теоретического бэкграунда не нужно. На первых шагах всё что Вам нужно будет понять — каррирование, ФВП, лямбды, ленивость. Это всё достаточно простые вещи, разжёванные в начале любой книжки по функциональному программированию. Ну а если вдруг, когда Вы столкнётесь с понятием "монада", Вам захочется узнать, что оно значит вне Haskell'а, откуда оно взялось — никто не мешает прочитать статейку/главу книги о ТК когда это понадобиться, не обязательно делать это заранее.
    Ответ написан
    Комментировать
  • Для каких задач используется Haskell?

    1. Насколько я знаю, относительно востребован в телекоме
    2. Возможно, новичку его будет понять даже проще, потому что у новичка отсутствует привычка мыслить императивно
    3. На вики в статье про Haskell есть примеры
    4. Уже выше написали
    5. Haskell гораздо менее востребован, чем Java, PHP, C++ etc. Но с другой стороны, в компаниях, где пишут на Erlang, Scala, Clojure и прочей функциональщине и околофункциональщине, знание Haskell может быть плюсом. Ну и для развития мозга здорово — сколько ни читай статей про ФП в JS или Python, не поймёшь функциональщину как если писать на Haskell. А после этого можно уже переносить полученные знания на мейнстрим.
    Ответ написан
    2 комментария