@haskellru

Страница 327 из 1551
kir
19.07.2017
18:13:08
Для понимания монад советую сесть и реализовать State, Reader, Writer руками.

Max
19.07.2017
18:13:33
Это не понимание. Это реализация.

Leonid
19.07.2017
18:13:42
вот поэтому люди на работе пишут на Го и плачут (или на скале, и рыдают). а на хаскеле только дома шуточки шутят

Denis
19.07.2017
18:13:58
кстати в программировании только эндофункторы

Google
Max
19.07.2017
18:14:10
И как говорят, сводить общее к частному грешновато

Index
19.07.2017
18:14:13
Да ладно? Вот это история

kir
19.07.2017
18:14:16
Я начал с реализации, а потом получил и понимание.

Denis
19.07.2017
18:14:26
а вот чтобы стать монадой надо к эндофунктору добавить 2 натуральных преобразования pure, join

Index
19.07.2017
18:14:42
кстати в программировании только эндофункторы
Я легко могу привести пример не-эндофунктора

В программировании!

Denis
19.07.2017
18:14:55
в хаскелл?

Max
19.07.2017
18:14:58
Ну вот одно из реализаций - вычисление с состоянием, за что меня и загнобили ))

Denis
19.07.2017
18:15:12
В программировании!
пример в студию

Index
19.07.2017
18:15:16
> Готов сходу сформулировать определение категориального моноида? Ну диаграммы, которые должны коммутировать, не нарисую, а так да

Leonid
19.07.2017
18:15:16
поясните мне за monad-logger лучше. мне таки его в своё окружение в ридере всунуть или как трансформер использовать?

Index
19.07.2017
18:15:35
пример в студию
класс называется Contravariant, это функтор из Hask в Op(Hask)

Google
kir
19.07.2017
18:15:38
В общем-то, монады не сложнее Promise из js, да простят меня здесь сидящие.

Index
19.07.2017
18:15:43
самый тривиальный пример

или там Bifunctor, из Hask*Hask в Hask

Denis
19.07.2017
18:16:03
класс называется Contravariant, это функтор из Hask в Op(Hask)
хм, вроде все это в Hask и находится

Index
19.07.2017
18:16:47
Хочется чтобы совсем не Hask было, возьми кайнды отличающиеся от *

И GADT-ы

Например, rmap из vinyl

kir
19.07.2017
18:18:44
Leonid newtype LoggingT m a же, суй в стек трансформеров. Ты же не хочешь методы class MonadLogger руками реализовывать, вынимая его потроха из ReaderT env?

Leonid
19.07.2017
18:19:23
ну обычно я так и делаю. там в потрохах будет только функция одна

kir
19.07.2017
18:22:13
Leonid Но... зачем? Если у тебя какая-то конкретная монада, а не набор из (MonadLogger m, MonadError E m, MonadIO m) => ... в каждом методе, то лучше будет сунуть в стек. У GHC внутри есть спецоптимизации для стеков трансформеров.

Dmitry
19.07.2017
18:27:41
Монада это тайпкласс. Расходимся.

Vasiliy
19.07.2017
18:29:01
ну обычно я так и делаю. там в потрохах будет только функция одна
это ты что-то типа вот такого делаешь? https://www.fpcomplete.com/blog/2017/06/readert-design-pattern

Igor
19.07.2017
18:29:07
Монада это тайпкласс. Расходимся.
Но ты забыл про законы ?

Dmitry
19.07.2017
18:29:30
Они все равно не проверяются

? animufag ?
19.07.2017
18:30:20
значит тайпклассы могут хранить состояние

А чего их понимать? Монада - это просто цепочка вычислений с состоянием. ))

Монада это тайпкласс. Расходимся.

Leonid
19.07.2017
18:30:21
kir ну как-то не люблю я длинные стеки. долгое время в трансформерсах не было инлайнов, например

Google
Vasiliy
19.07.2017
18:31:07
Они все равно не проверяются
ну, кстати, https://blog.jle.im/entry/verified-instances-in-haskell.html

Index
19.07.2017
18:32:13
Жги
В категории C с тензорным произведением * и нейтральным элементом произведения 1, имеем моноидальный объект M если существуют морфизмы mu : M*M -> M eta : 1 -> M такие, что (рисуем диаграммы)

kir
19.07.2017
18:33:12
В Agda-то законы проверяются (хорошо, что я на ней не пишу)

Index
19.07.2017
18:33:47
Монада это тайпкласс. Расходимся.
Монады в категории Hask представлены в Haskell как тайпкласс

Мерлин
19.07.2017
18:34:10
Имхо лучшее объяснение монад >_> https://stackoverflow.com/questions/2704652/monad-in-plain-english-for-the-oop-programmer-with-no-fp-background

Index
19.07.2017
18:34:23
это же нат преобразования из монады
меня попросили определения моноида из теорката

mu и eta в категории эндофункторов дают "нат преобразования из монады"

join и return, то есть

Denis
19.07.2017
18:35:23
это я знаю

That Guy
19.07.2017
18:36:31
В категории C с тензорным произведением * и нейтральным элементом произведения 1, имеем моноидальный объект M если существуют морфизмы mu : M*M -> M eta : 1 -> M такие, что (рисуем диаграммы)
Осталось всего лишь: • определить слова "категория с тензорным произведением" (aka произнести слова "моноидальная категория") • определить тензорное произведение функторов • вспомнить, что морфизмы функторов — это их естественные преобразования • мотивировать диаграммы (они же не с потолка взялись) и ты по-прежнему примерно никак не поможешь новичку, который пришёл сюда, чтобы понять, как всё это дело прогать.

kir
19.07.2017
18:37:19
А, собственно, какое определение монады нужно - операционное, решаемые задачи или что?

kana
19.07.2017
18:37:39
Шоб в голове прояснилось

Leonid
19.07.2017
18:37:48
/r/imverysmart

kir
19.07.2017
18:38:05
Promise в жаваскрипте видел?

Index
19.07.2017
18:38:09
> определить слова "категория с тензорным произведением" (aka произнести слова "моноидальная категория") Ты просто название дал > определить тензорное произведение функторов Compose > вспомнить, что морфизмы функторов — это их естественные преобразования Конечно > мотивировать диаграммы (они же не с потолка взялись) Дают ассоциативность и нейтральный элемент > и ты по-прежнему примерно никак не поможешь новичку, Я и не пытался. Новичку ни к чему понимать монады

kana
19.07.2017
18:38:22
Не, мне объяснять не нужно)

kir
19.07.2017
18:38:33
Так вот - Promise можно назвать монадой, с некоторой натяжкой.

Index
19.07.2017
18:38:45
Да

Google
Vasiliy
19.07.2017
18:39:34
по-моему, в js у промисов then - это fmap и bind в одном лице

Leonid
19.07.2017
18:39:57
чуваки с двача с /pr/ сюда заходят такие "Ой, а поясните монады" а потом хихикают

Denis
19.07.2017
18:39:59
по-моему в js это кусок говна

в js уж есть task,future например fluture библиотека

Дмитрий
19.07.2017
18:40:31
В js есть Future

Да, не успел)

Vasiliy
19.07.2017
18:40:50
можно сократить до "js это кусок говна" :D

Max
19.07.2017
18:40:58
Хм. Что только не сделают, лишь бы на колбеках не писать ))

Дмитрий
19.07.2017
18:40:58
Промисы не до конца корректно всё имплементируют, поэтому о них смысла разговаривать мало

Denis
19.07.2017
18:40:58
тоже вариант

Admin
ERROR: S client not available

Denis
19.07.2017
18:41:14
промисы это не ленивая ранняя срань

Дмитрий
19.07.2017
18:41:39
kir
19.07.2017
18:42:36
Ой, а на js можно сделать чтоб было лениво и не в 100 раз медленнее? Пока в webassembly call/cc не добавят и STG не реализуют, все под веб так и будут писать не-лениво.

А, да, GHCjs

Vasiliy
19.07.2017
18:43:02
Из 2007 выпал, понимаю
в смысле? js стал годным?

kir
19.07.2017
18:43:11
Link, please?

На быстрый ленивый js

Google
Дмитрий
19.07.2017
18:43:32
в смысле? js стал годным?
Compilation target для Idris, как думаешь?

kir
19.07.2017
18:44:10
Хмм. А Idris с какого перепугу ленивым стал?

Vasiliy
19.07.2017
18:44:28
ну а ghc компилится в ассемблер, от этого ассемблер не становится лучше

Дмитрий
19.07.2017
18:44:45
Хмм. А Idris с какого перепугу ленивым стал?
Щас бы контекст вопроса под себя менять

Max
19.07.2017
18:44:57
А в итоге там битики, пацаны...

И физика...

Дмитрий
19.07.2017
18:45:17
Это не rocket sience, чтобы такой чепухой в 2017 в тупик ставить

Найдите новый объект для хейта и новую идею для каверзных вопросов

kir
19.07.2017
18:46:17
Меня ленивый js (либами он ленивый или как) интересует с практической точки зрения - как compilation target. А то написанный мной недо-STG чуток медленноват.

Vasiliy
19.07.2017
18:46:59
есть один объект - пыхтон

>>> False == False in [False] True

Denis
19.07.2017
18:47:36
интересно во что генерится лень из purescript

Дмитрий
19.07.2017
18:47:54
kir
19.07.2017
18:47:56
Пурскрипт не ленивый, лол

Denis
19.07.2017
18:48:08
https://github.com/purescript/purescript-lazy

kir
19.07.2017
18:48:27
foreign import data Lazy :: Type -> Type

kir
19.07.2017
18:48:41
А сам он вполне агрессивно выполняющийся

Aragaer
19.07.2017
18:48:47
>>> False == False in [False] True
Нипонел! Это как это?

Denis
19.07.2017
18:48:53
foreign import data Lazy :: Type -> Type
мне интересно на уровне js что это будет

Index
19.07.2017
18:49:17
Я не вижу где в этом purescript-lazy вообще sharing.

Vasiliy
19.07.2017
18:49:21
Нипонел! Это как это?
это особая, голландская магия

Страница 327 из 1551