Size: a a a

2020 October 12

VS

Vladimir Shchur in F# Chat
У меня вот все на тасках все равно, поэтому не проникли)
источник

PD

Prunkles Dreemurr in F# Chat
Vladimir Shchur
У меня вот все на тасках все равно, поэтому не проникли)
TaskResult, хе-хе
источник

VS

Vladimir Shchur in F# Chat
Vladimir Shchur
да, ты прав, наверное там было  Async<Task<Task<Option<List<Message<T>>>>>>
вот пример))
источник

PD

Prunkles Dreemurr in F# Chat
В общем, я подумал немного больше 5-и минут, и в принципе
userDao |> (UserDomain.ofDao |> Option.map |> Async.map)
мне показался неплохим. Мы пихаем userDao в функцию ofDao, которая сама прошла через цепочку пайпов, поднимаясь "в другие миры"
источник

I

Igor in F# Chat
Prunkles Dreemurr
А разве какие-нибудь AsyncResult вместе с соответствующим AsyncResult.map не проникли уже в большую часть проектов? Так чем тогда AsyncOption.map хуже?
Честно говоря не понимаю смысл в AsyncResult, если можно кидать исключения)
источник

VS

Vladimir Shchur in F# Chat
Prunkles Dreemurr
В общем, я подумал немного больше 5-и минут, и в принципе
userDao |> (UserDomain.ofDao |> Option.map |> Async.map)
мне показался неплохим. Мы пихаем userDao в функцию ofDao, которая сама прошла через цепочку пайпов, поднимаясь "в другие миры"
читается лучше, чем первоначальный вариант)
источник

ДБ

Дмитрий Башинский... in F# Chat
Igor
Честно говоря не понимаю смысл в AsyncResult, если можно кидать исключения)
Опа-па
источник

ДБ

Дмитрий Башинский... in F# Chat
А как же явность?
источник

I

Igor in F# Chat
Дмитрий Башинский
А как же явность?
Так никто тебя не остановит от выбрасывания исключения внутри AsyncResult
Я как бы смирился с тем что async = io = сайдэффекты

('a, exn) Result Async
Полезны в узких кейфах, вроде расспаралелить и собрать результаты в независимости от ошибок
источник

R

Roman in F# Chat
Igor
Честно говоря не понимаю смысл в AsyncResult, если можно кидать исключения)
ожидаемые ошибки (NotFound, AlreadyExists etc.) — часть контракта. Удобней, когда контракт видно в сигнатуре, и его не приходится компилировать в уме по логам.

Непредсказуемые ошибки (Timeout, Connection lost etc) в контракт пихать смысла нет, и их удобней кидать в исключениях
источник

dl

dzmitry lahoda in F# Chat
Roman
ожидаемые ошибки (NotFound, AlreadyExists etc.) — часть контракта. Удобней, когда контракт видно в сигнатуре, и его не приходится компилировать в уме по логам.

Непредсказуемые ошибки (Timeout, Connection lost etc) в контракт пихать смысла нет, и их удобней кидать в исключениях
смотря  какой софт пишеться. если надежный, то timeout можно обработать как ожидаемое и временно конекшн сделать в другой регион. если ConnectionLost - в зависимости от типа потери, можно например сделать зависимые ретраи. а если код был под лис локом распределенным - то сбросить лок чтобы процессить начал у кого с конекшеном все ок.
источник

dl

dzmitry lahoda in F# Chat
(то есть эти тоже вполне себе ожидаемы)
источник

R

Roman in F# Chat
dzmitry lahoda
смотря  какой софт пишеться. если надежный, то timeout можно обработать как ожидаемое и временно конекшн сделать в другой регион. если ConnectionLost - в зависимости от типа потери, можно например сделать зависимые ретраи. а если код был под лис локом распределенным - то сбросить лок чтобы процессить начал у кого с конекшеном все ок.
это уже детали. Я приводил пример, а подробности, само собой, зависят от контекста.
источник

R

Roman in F# Chat
В среднем бизнес приложении указывать таймаут в контракте нахуй не нужно
источник

SB

S B in F# Chat
Roman
В среднем бизнес приложении указывать таймаут в контракте нахуй не нужно
Ну нет. Один только резолвинг имени хоста в айпи может в худшем случае порядка 15 секунд длиться. Мало бизнес приложений сейчас, которые готовы с этим мириться.
источник

R

Roman in F# Chat
S B
Ну нет. Один только резолвинг имени хоста в айпи может в худшем случае порядка 15 секунд длиться. Мало бизнес приложений сейчас, которые готовы с этим мириться.
И? У тебя часто резолвинг хоста длится 15 секунд? Настолько часто, что это действительно разумнее предусмотреть в контракте, чем пофиксить инфраструктуру?
источник

SB

S B in F# Chat
Roman
И? У тебя часто резолвинг хоста длится 15 секунд? Настолько часто, что это действительно разумнее предусмотреть в контракте, чем пофиксить инфраструктуру?
Ну на самом деле для софтреалтайма это действительно проблема и тайм-ауты сыпятся чаще, чем ты думаешь, причём не только в доморощенных датацентрах на даче CEO, но и на AWS. Зависит от времени, которое допустимо ждать. Для каких-то фрагментов тайм-аут сделать частью контракта действительно может иметь смысл; у меня например в такой ситуации критическая операция продолжалась дальше в неконсистентном состоянии, и при этом саппорт получат прямиком в Слак прицельный нотис о том, где именно это произошло и принимали какое-то решение в зависимости от контекста.
источник

SB

S B in F# Chat
Иногда этим решением было остановить процесс немедленно, иногда у них были скрипит, которые позволяли вернуть в консистентное состояние принудительно.
источник

I

Igor in F# Chat
Vlad Zaa
5 вместе с .net 5 и новой студией должен быть
А вы успеете? .net 5 же через месяц выходит
источник

I

Igor in F# Chat
Ребят, что бы запинить версию fsharp.core, достаточно ее прописать в fsproj?
источник