Size: a a a

2018 April 02

DR

Denis Redozubov in fprog_spb
Sergey
Так видно же, что ты всячески сопротивляешься. Зачем в детский сад все переводить.
Я не сопротивляюсь, это называется не соглашаться. Потому что у меня другое мнение. В неправоте которого меня никто не убедил.
источник

АГ

Александр Гранин in fprog_spb
Denis Redozubov
если на ruby написать bind и return для любого типа, который имеет инстанс Monad в хаскелле - это означает что ruby поддерживает монадное программирование?
Денис, я не вижу причин называть код немонадическим, если при его выполнении происходит все то же самое
источник

S

Sergey in fprog_spb
Denis Redozubov
если на ruby написать bind и return для любого типа, который имеет инстанс Monad в хаскелле - это означает что ruby поддерживает монадное программирование?
Закрыв глаза на отсутсвие четкой формулировки "монадно программирование" - да.
источник

PK

Pavel Khritonenko in fprog_spb
let result: City option = maybe {
 let! envlope = getEnvelope message
 let! address = getAddress envelope
 return! getCity addess }
источник

АГ

Александр Гранин in fprog_spb
Все байнды, вся передача контекста и т.д.
источник

PK

Pavel Khritonenko in fprog_spb
каждый ! - это байнд
источник

PK

Pavel Khritonenko in fprog_spb
Так же работает для async / io / reader / writer / state etc
источник

PK

Pavel Khritonenko in fprog_spb
код будет таким же, только имя "монады" изменится с maybe на соответствующее
источник

DR

Denis Redozubov in fprog_spb
Александр Гранин
Денис, я не вижу причин называть код немонадическим, если при его выполнении происходит все то же самое
Код делающий то же самое написать, разумеется, можно. С этим никто не спорит. Те же монады в хаскелле это набор функций неявно склеенные через парочку тайпклассов. Но я говорю не о том - если в ЯП нет возможности говорить о таком(монадном) интерфейсе в таком(полиморфном) ключе по монаде, то язык не поворачивается это поддержкой монад называть.
источник

АГ

Александр Гранин in fprog_spb
Denis Redozubov
Код делающий то же самое написать, разумеется, можно. С этим никто не спорит. Те же монады в хаскелле это набор функций неявно склеенные через парочку тайпклассов. Но я говорю не о том - если в ЯП нет возможности говорить о таком(монадном) интерфейсе в таком(полиморфном) ключе по монаде, то язык не поворачивается это поддержкой монад называть.
Окей, с этой более аккуратной формулировкой про "поддержку монад" согласиться можно.
источник

PK

Pavel Khritonenko in fprog_spb
HKT нет, писать bind / return / map надо для каждого отдельного типа - я же про это написал сразу
источник

PK

Pavel Khritonenko in fprog_spb
Возникают ли сложности с этим? Ну да. Приходится для пар монад писать свои костыли ( async + choice, etc )
источник

PK

Pavel Khritonenko in fprog_spb
В Haskell с монадными комбинаторами проще?
источник

DR

Denis Redozubov in fprog_spb
в haskell все содержимое Control.Monad не надо переписывать для каждого типа
источник

AV

Alexander Vershilov in fprog_spb
Александр Гранин
Все байнды, вся передача контекста и т.д.
код монадный когда есть 1 unless, when, repeatM и т.п.
источник

AV

Alexander Vershilov in fprog_spb
т.е. вспомогательные функции написанные вне классов, работающие для любого инстанса монады
источник

AV

Alexander Vershilov in fprog_spb
именно в этом и фишка, и когда я могу написать, что-то своё просто foo:: Monad m => ... -> m a
источник

AV

Alexander Vershilov in fprog_spb
в этом отношении в haskell не популярны комонады, т.к. таких функций имеющих смысл - исчезающе мало
источник

DR

Denis Redozubov in fprog_spb
я уж молчу про написание трансформерных библиотек
источник

АГ

Александр Гранин in fprog_spb
Alexander Vershilov
код монадный когда есть 1 unless, when, repeatM и т.п.
Тогда мне нужно определение случая, если есть все те же (неполиморфрные) комбинаторы для конкретного типа (н-р, State), и есть код, их использующий. Он какой тогда?
источник