avva: (moose)
[personal profile] avva
Совет про то, как понять монады, из презентации What I Wish I Knew When Learning Haskell:
Eightfold Path to Monad Satori

  1. Don't read the monad tutorials.
  2. No really, don't read the monad tutorials.
  3. Learn about Haskell types.
  4. Learn what a typeclass is.
  5. Read the Typeclassopedia.
  6. Read the monad definitions.
  7. Use monads in real code.
  8. Don't write monad-analogy tutorials.
Мне особенно нравится, как последний пункт замыкает круг, начатый первым.

В принципе, это хороший совет, но не для всех (как обычно). Почему автор решил, что то, что кажется правильным ему, подойдет всем изучающим Хаскель - остается неясным. То есть непонятно, это опирается на какую-то нетривиальную рефлексию, опыт обучения итд., или это наивное обобщение от себя любимого. Мне-то лично как раз этот совет по душе, но я не хочу наивно обобщать.

Date: 2013-04-14 03:09 pm (UTC)
From: [identity profile] cema.livejournal.com
Ну можно изучать Хаскель, а можно математику. Соответственно, монады либо появятся сами собой в процессе изучения языка, либо... появятся сами собой в процессе изучения науки. :-) А начинать с них ни к чему. Видимо, так.

Date: 2013-04-14 03:52 pm (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
Монады появляются сами собой у гениев.

Date: 2013-04-14 04:35 pm (UTC)
From: [identity profile] onkel-hans.livejournal.com
Вы не путаете с трихомонадами?

Date: 2013-04-15 05:39 am (UTC)
From: [identity profile] cema.livejournal.com
Или у тех, кто серьезно изучает материал.

Date: 2013-04-14 03:16 pm (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
Хорошая презентация. Но монады нельзя понять только из определений. Нужно понять их связь с сопряженными функторами. Только тогда может наступить сатори (а может и не наступить).

Date: 2013-04-14 04:34 pm (UTC)
From: [identity profile] onkel-hans.livejournal.com
Все обобщение неверны. Включая данное.
Но нельзя же не обобщать.

Date: 2013-04-14 08:27 pm (UTC)
From: [identity profile] migmit.livejournal.com
Ну, кое-где он явно гонит. Скажем, pointfree просто не собирается с нынешней mtl (и уже довольно давно).

Date: 2013-04-14 09:04 pm (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
А чего это у меня pointfree 1.0.4.3 только что вот буквально собралось с mtl вот буквально 2.1.2?

Date: 2013-04-15 04:07 am (UTC)
From: [identity profile] migmit.livejournal.com
Понял свою ошибку. Читать "не собирается с нынешней base".

Date: 2013-04-15 07:49 am (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
Кажется, послеедняя base регулярно ломает половину всего, нет?

Date: 2013-04-14 08:28 pm (UTC)
From: [identity profile] janatem.livejournal.com
Вроде правильно. Только, возможно, в самом начале знакомства с Хаскелем не стоит сразу смотреть определение IO монады, а временно считать, что ввод/вывод — это ad hoc конструкции языка. То есть пункт (6) немного отложить.

Date: 2013-04-14 08:30 pm (UTC)
From: [identity profile] avva.livejournal.com
А почему вы считате, что правильно?

Date: 2013-04-14 09:03 pm (UTC)
From: [identity profile] janatem.livejournal.com
Потому что кто-то использовал звонкое мемопорождающее слово «монада» для обозначения довольно заурядной сущности. В стандартной библиотеке полно классов сравнимых по сложности с классом Monad, и, хотя монады довольно важны и часто используются, они не являются чем-то особенным, заслуживающим отдельных туториалов.

Я сам какое-то время перся с монад и даже засовывал их в SML-ный код, хотя в SML нет классов, так что приходилось описывать монадные операции для каждого типа отдельно и, что самое неудобное, именовать по-разному. Задним числом я осознаю, что тогда мне по сути нужны были комбинаторы (и функциональное программирование приучает к такому стилю), чтобы оперировать объектами, не заглядывая в их потроха без необходимости. Где-то для этого, действительно, удобны именно монадные операции, где-то другие комбинаторы.

Сейчас я достаточно хорошо знаю Хаскель, чтобы утверждать, что класс Monad — обычная рабочая лошадка наравне с другими.

Date: 2013-04-14 08:54 pm (UTC)
From: [identity profile] max630.livejournal.com
за несколько часов уже 3 независимый пост про хаскель. Видимо, солнечные вспышки влияют

Date: 2013-04-14 10:14 pm (UTC)
From: [identity profile] herr-sgor.livejournal.com
Монада аналогична эпифизу в его понимании Декартом.

Date: 2013-04-15 07:06 am (UTC)
From: [identity profile] dimrub.livejournal.com
Можно ли считать эту рекомендацию тюториалом по монадам, и если да, есть ли смысл читать далее первого пункта? Ну, хорошо, второго?

Date: 2013-04-15 07:41 am (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
Тюториал по X содержит правила пользования X. Это правила пользования тюториалами по монадам. Тюториалы же по монадам сами не являются монадами, кажется, никогда ;)

January 2026

S M T W T F S
    1 2 3
4 5 6 78910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 8th, 2026 02:16 am
Powered by Dreamwidth Studios