Size: a a a

Saint P Ruby Community

2020 February 03

IM

Igor Morozov in Saint P Ruby Community
да там на скриншоте вообще матчер, который выкинуть бы и заменить на case или case in
источник

AG

Alex G in Saint P Ruby Community
Я вот это имел в виду, говоря про "насквозь"
источник

IM

Igor Morozov in Saint P Ruby Community
агась, но там же это явно
источник

IM

Igor Morozov in Saint P Ruby Community
это не goto как в исключениях
источник

IM

Igor Morozov in Saint P Ruby Community
ну как явно. под капотом явно, ты просто DSL используешь
источник

AG

Alex G in Saint P Ruby Community
ну да, я поэтому и говорил "смотря как пишешь"
источник

IM

Igor Morozov in Saint P Ruby Community
вот тут как раз не эта диаграмма, вот в чём дело
источник

IM

Igor Morozov in Saint P Ruby Community
оно похоже на исключения, но не так работает)
источник

IM

Igor Morozov in Saint P Ruby Community
на потребительском уровне это всё примерно одинаково выглядит, с этим я согласен
источник

AG

Alex G in Saint P Ruby Community
да, поэтому я и говорю, что "минус" исключений "hidden control flow" в таком подходе (ROP) тут тоже есть
источник

IM

Igor Morozov in Saint P Ruby Community
ну вон там ведь эта картинка есть, которая говорит про этот хидден контрол флоу

http://nywkap.com/assets/ExceptionHiddenControlFlow.gif

где в ROP это? 🤔
источник

AG

Alex G in Saint P Ruby Community
я тебя опять не понимаю, сорян.
Я же показал код, в котором failure прошло наверх.

Или ты имеешь в виду, что это не чистый пример, потому что на самом деле там на result обрабатывается внутри, просто это скрыто от юзера?
источник

IM

Igor Morozov in Saint P Ruby Community
Оно проходит наверх, но не прыгая по стеку, как это делают исключения. Там нет той механики, которую в исключениях называют хидден контрол флоу

Другой hidden там. Не как в исключениях
источник

IM

Igor Morozov in Saint P Ruby Community
http://nywkap.com/programming/either-monads-ruby.html#error-values

Вот так оно работает в драй-т
источник

NS

Nikita Shilnikov in Saint P Ruby Community
всегда можно написать if (err != nil), тогда точно не на что будет жаловаться. unlimited power
источник

NS

Nikita Shilnikov in Saint P Ruby Community
на самом деле рассуждения выходят в плоскость недостатков динамических яп уже, я не думаю, что тут можно что-то принципиально улучшить без прикручивания тайпчекера. Разве подбросить апи еще немного
источник

IM

Igor Morozov in Saint P Ruby Community
Nikita Shilnikov
на самом деле рассуждения выходят в плоскость недостатков динамических яп уже, я не думаю, что тут можно что-то принципиально улучшить без прикручивания тайпчекера. Разве подбросить апи еще немного
куда ещё подбрасывать? было б вообще ништяк через годик выпилить часть API монадок и форсировать паттерн матчинг или bind/or, но юзеры вряд ли оценят
источник

NS

Nikita Shilnikov in Saint P Ruby Community
дада, байнд из монад выпилить, отличный план
источник

IM

Igor Morozov in Saint P Ruby Community
эээй, я этого не говорил!
источник

IM

Igor Morozov in Saint P Ruby Community
но мне нравится твой дух
источник