Size: a a a

F# Flood: Неделя Революций (прирост борцов за свободу вырос вдвое)

2020 August 11

МП

Миша Проказин... in F# Flood: Неделя Революций (прирост борцов за свободу вырос вдвое)
Дайте тогда второй пример монады из стандартной библиотеки?
источник

SN

Shub Niggurath in F# Flood: Неделя Революций (прирост борцов за свободу вырос вдвое)
например если ты сделаешь свой тип аппликативным функтором, то у тебя в хаскеле есть целый модуль Data.Control и Data.Applicative, дающий множество операторов. а так же куча других либ принимают на вход функторы
источник

SN

Shub Niggurath in F# Flood: Неделя Революций (прирост борцов за свободу вырос вдвое)
Миша Проказин
Дайте тогда второй пример монады из стандартной библиотеки?
Result
источник

MS

Maksym Suprunenko in F# Flood: Неделя Революций (прирост борцов за свободу вырос вдвое)
Shub Niggurath
повторюсь, что у меня других нет. мне нужно закладывать этот факт в свои прогнозы. в прошлый раз в прогнозы заложили наличие умных и высокомотивированных разработчиков, но наняли идиотов с пояснением "ну раз я освоил эфшарп за месяц, то сунь хунь мунь освоит за 5 недель"
Мне показалось что фшарп без ментора юзать про нереально сложно, потому что создаётся илюзия что пишешь функционально, а самом дело мало сеи отличаться от фшарпа
источник

ak

alIxkononov kononov in F# Flood: Неделя Революций (прирост борцов за свободу вырос вдвое)
Shub Niggurath
стек монад - это такой способ скомбинировать низкоуровневые монады в монаду, которая имеет свойства всех этих монад. это дает профит, если у тебя есть синтаксис в языке (сахар или штатный - не важно) описывать такие комбинаторы и использовать их потом. в эфшарпе этого нет, у нас CE  заместо монад, а они не позволяют комбинировать, тебе нужно писать реализацию нового CE, возможно в терминах существующих CE. можешь посмотреть FsToolkit например, они там написали комбинаторы для AsyncResult
спасибо
источник

SN

Shub Niggurath in F# Flood: Неделя Революций (прирост борцов за свободу вырос вдвое)
Maksym Suprunenko
Мне показалось что фшарп без ментора юзать про нереально сложно, потому что создаётся илюзия что пишешь функционально, а самом дело мало сеи отличаться от фшарпа
есть разные понятия "функционально".
источник

MS

Maksym Suprunenko in F# Flood: Неделя Революций (прирост борцов за свободу вырос вдвое)
Shub Niggurath
есть разные понятия "функционально".
Лично для меня было сложно переключиться что бы программировать на railway подходе
источник

MS

Maksym Suprunenko in F# Flood: Неделя Революций (прирост борцов за свободу вырос вдвое)
С result.bind и всем остальным
источник

SN

Shub Niggurath in F# Flood: Неделя Революций (прирост борцов за свободу вырос вдвое)
Maksym Suprunenko
Лично для меня было сложно переключиться что бы программировать на railway подходе
нет никакого railway подхода, это лженаучная теория по типу гомеопатии
источник

SN

Shub Niggurath in F# Flood: Неделя Революций (прирост борцов за свободу вырос вдвое)
есть монадичный код
источник

MS

Maksym Suprunenko in F# Flood: Неделя Революций (прирост борцов за свободу вырос вдвое)
Shub Niggurath
нет никакого railway подхода, это лженаучная теория по типу гомеопатии
Ладно, тогда просто с async result
источник

R

Roman in F# Flood: Неделя Революций (прирост борцов за свободу вырос вдвое)
Миша Проказин
Дайте тогда второй пример монады из стандартной библиотеки?
любой тип-контейнер, для которого есть map. Мап — это та операция, о которой говорили в моноиде.
Например, энумерабл — монада. Можно смапить элементы, и можно сделать лифт — построить энумерабл из единственного элемента
источник

MS

Maksym Suprunenko in F# Flood: Неделя Революций (прирост борцов за свободу вырос вдвое)
Потому что со стороны видно больше
источник

MS

Maksym Suprunenko in F# Flood: Неделя Революций (прирост борцов за свободу вырос вдвое)
И где данный подход тоже не очень подходит
источник

SN

Shub Niggurath in F# Flood: Неделя Революций (прирост борцов за свободу вырос вдвое)
Maksym Suprunenko
Ладно, тогда просто с async result
ну ты ж понимаешь, что async  result - это банально 'T и 'U?
источник

MS

Maksym Suprunenko in F# Flood: Неделя Революций (прирост борцов за свободу вырос вдвое)
Да
источник

MS

Maksym Suprunenko in F# Flood: Неделя Революций (прирост борцов за свободу вырос вдвое)
Это и так понятно
источник

R

Roman in F# Flood: Неделя Революций (прирост борцов за свободу вырос вдвое)
Roman
любой тип-контейнер, для которого есть map. Мап — это та операция, о которой говорили в моноиде.
Например, энумерабл — монада. Можно смапить элементы, и можно сделать лифт — построить энумерабл из единственного элемента
Единственное, что у меня немного не вяжется, это что у мапа сигнатура не 'a -> 'a -> 'a, но возможно @DogeShibu поможет разобраться
источник

MS

Maksym Suprunenko in F# Flood: Неделя Революций (прирост борцов за свободу вырос вдвое)
Ну фишка в том что async result как массив на выходе, это уже немного сложно как обрабатывать
источник

SN

Shub Niggurath in F# Flood: Неделя Революций (прирост борцов за свободу вырос вдвое)
Roman
любой тип-контейнер, для которого есть map. Мап — это та операция, о которой говорили в моноиде.
Например, энумерабл — монада. Можно смапить элементы, и можно сделать лифт — построить энумерабл из единственного элемента
это  функтор,  а не монада. для монады нужны две операции - bind и return
источник