Size: a a a

2021 March 03

к

кана in Haskell
(предполагаю, пытались походить на императивные языки)
источник

JS

Jerzy Syrowiecki in Haskell
[BRM]White Rabbit
Я правильно понимаю, return можно использовать для создания только тех дата-тайпов, которые хоть одним вариантом могут принимать значение a(любое, ага)?
контрпример — Proxy
источник

к

кана in Haskell
ну или Const a, возможно более известный пример
источник

JS

Jerzy Syrowiecki in Haskell
а return не из теорката? или это имя только после Хаскеля появилось в теоркате?
источник

[

[BRM]White Rabbit in Haskell
кана
это хорошо видно в имени функции - pure

это тот же return, только еще в аппликативе. return остается сейчас с легаси времен, когда класс монад не требовал инстанс аппликатива
На третий день вождь Соколиный Глаз увидел, что у его тюрьмы нет одной стены...
Лучше уж сразу в ghci кидать :info на классы, а не самому тупить🌚
источник

MK

Maxim Koltsov in Haskell
в ТК это вообще unit вроде
источник

к

кана in Haskell
лучше всего считать pure как что-то, что выполняет законы для монады, а все остальные определения это проекции и притягивания за уши

то есть даже формально, pure это функция, для которой выполняются условия
forall Monad m, type a b, e :: m a, x :: a, f :: a -> m b
e >>= pure   =   e
pure x >>= f   =   f x
источник

JS

Jerzy Syrowiecki in Haskell
Maxim Koltsov
в ТК это вообще unit вроде
а также η, μ
источник

DG

Denis Gabidullin in Haskell
[BRM]White Rabbit
А теория категорий позволит мне лучше понять класс монад? Просто я кажлый раз вдупляю по паре минут в подсказку от хлс, в голове прокручивая левую и правую идентичности, ассоциативность, моделируя в голове эти равенства
Имхо, нет.
Да и сам подход "понять" класс монад — неверный.
Ты же видел 2 требуемых функции. Вот и всё понимание.

Понимать нужно конкретный инстанс. Что именно делает bind для конкретного типа.
источник

MP

Misha Puzanov in Haskell
[BRM]White Rabbit
А теория категорий позволит мне лучше понять класс монад? Просто я кажлый раз вдупляю по паре минут в подсказку от хлс, в голове прокручивая левую и правую идентичности, ассоциативность, моделируя в голове эти равенства
ну и да, не надо пытаться "понять монаду"
это просто такая абстракция

лучше посмотреть на как можно большее число имплементаций монад и по мере освоения появится интуиция и какое-то внутреннее понимание "на пальцах"
источник

[

[BRM]White Rabbit in Haskell
Понял, принял. Надо дойти до do-нотации и самому написать штук 5 таких крч
источник

JS

Jerzy Syrowiecki in Haskell
кстати, вот хорошая статья про "понять монаду" https://ruhaskell.org/posts/theory/2015/01/20/the-what-are-monads-fallacy.html
источник

к

кана in Haskell
[BRM]White Rabbit
Понял, принял. Надо дойти до do-нотации и самому написать штук 5 таких крч
мне очень помогла попытка реализации самому Reader/State/Writer
источник

к

кана in Haskell
ну, я подглядывал в реализации офк, но все равно это помогло, в голове что-то щелкнуло

так сходу и трансформеры можно понять
источник

[

[BRM]White Rabbit in Haskell
кана
ну, я подглядывал в реализации офк, но все равно это помогло, в голове что-то щелкнуло

так сходу и трансформеры можно понять
Посмотрим.
...у меня уже 250 строк в файле со всеми тестами, пора разбивку проводить...
источник

JS

Jerzy Syrowiecki in Haskell
пора изучать структуру пакета
источник

AP

Aleksei (astynax) Pi... in Haskell
250 строк, это не так уж и много
источник

AP

Aleksei (astynax) Pi... in Haskell
Можно ещё и в literate style переписать, может стать понятнее
источник

[

[BRM]White Rabbit in Haskell
Jerzy Syrowiecki
пора изучать структуру пакета
А там разве не понятно всё?
Вот есть module, допустим Lib. После него в скобках идут экспортируемые функции и типы.
Потом where
И дальше пишешь всё, что хочешь
источник

JS

Jerzy Syrowiecki in Haskell
[BRM]White Rabbit
А там разве не понятно всё?
Вот есть module, допустим Lib. После него в скобках идут экспортируемые функции и типы.
Потом where
И дальше пишешь всё, что хочешь
во-первых, это про модуль,

во-вторых, даже тут есть много тонкостей, которые, конечно, совсем необязательно знать
источник