Pull to refresh

Comments 6

Вот почему бы не использовать Either (type | exception)?
Да хотя бы Either_Exception - как монаду затащить в язык + частный случай [do-]нотации для неё?


Этот вопрос прям мучает с тех пор - как посмотрел году в 2018 видео Андрея Бреслава с объяснениями дизайн-решений Котлина и попыток совместить exception с state-machine для корутин.

Можете пояснить где именно использовать Either?

Ввести механизм Either (можно только для Exception: EitherException<MyType> Either (Left Exception | Right MyType)), в асинхронном коде (и корутинах - если уж там необходимость в такой машинерии возникает) - запретить Exception, использовать Either.
Разумеется какая-то поддержка do-нотации, для этого частного случая нужна.

Опционально: при выходе в последовательный код (потока ОС) делать вызывать Exception, если Either его содержит.

Мне кажется такая история прорабатывалась в JetBrains, у них в стандартной библиотеки есть `Result` класс. Но видимо это не укладывалось как-то концептуально.

да спасибо, вот интересно было бы посмотреть \ послушать.

А что-нибудь полнее, чем вот эти выступления Андеря Бреслава (не важно видео \ статья) примерно в том же духе почему сдезайнено в языке именно так, вы не видели?

(видео для примера):
https://www.youtube.com/watch?v=QOIn8Uh3lkE

Команда 47 Degrees уже довольно долго и упорно дизайнит FP библиотеку https://arrow-kt.io/docs/core/ и https://arrow-kt.io/docs/apidocs/arrow-core/arrow.core.continuations/-effect/. В какой-то момент там было и что-то похожее на monad comprehension https://arrow-kt.io/docs/patterns/monad_comprehensions/, но сейчас как будто задепрекейтили

Sign up to leave a comment.

Articles