Size: a a a

F# Flood: ПДД made functional, making illegal state INGIBDDdale

2020 May 13

DS

Doge Shibu in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Shub Niggurath
я не сильно понимаю, почему это может быть здравая идея. Result<>  традиционно используется, чтобы заэнкодить два разных состояния, каждое из которых может быть детализировано (DU для успешных операций, DU для неуспешных) и явно зафорсить два разных обработчика для обеих видов возврата. если кому-то нужно только значение из Result - зачем заворачивать возврат в Result?
Тут идея в том, что у тебя может быть дефолтное значение для типа результата.

И ты хочешь, если пришел результат, то получить его, а если пришла ошибка, то залоггировать её и взять дефолтный результат.
источник

SN

Shub Niggurath in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Doge Shibu
Тут идея в том, что у тебя может быть дефолтное значение для типа результата.

И ты хочешь, если пришел результат, то получить его, а если пришла ошибка, то залоггировать её и взять дефолтный результат.
что в принципе делается таким же количеством строк без морфизмов и странных конверсий Result<a,b> -> Result<a,a>
источник

DS

Doge Shibu in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Shub Niggurath
что в принципе делается таким же количеством строк без морфизмов и странных конверсий Result<a,b> -> Result<a,a>
Поэтому я и сказал, что это можно в отдельную фукнцию с разумным названием спрятать и будет норм.
источник

КП

Крылатый Пегас... in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Vasiliy Pereverzev
Epic Games анонсировала Unreal Engine 5 и показала длинное демо на движке, которое работает на PS5.

Первая полноценная демонстрация возможностей консолей нового поколения.

https://dtf.ru/hard/135122
Нет RTX, дизлойс отпизка
источник

SN

Shub Niggurath in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Doge Shibu
Поэтому я и сказал, что это можно в отдельную фукнцию с разумным названием спрятать и будет норм.
хз, я не вижу никакого выигрыша, ни от функции, ни от логики. кодировать логику дефолтным значением резалта - а зачем нам системы типов тогда? давайте неуспешное тоже кодировать значением, например пустым списком, или там каким-то bottom value
источник

DS

Doge Shibu in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Shub Niggurath
хз, я не вижу никакого выигрыша, ни от функции, ни от логики. кодировать логику дефолтным значением резалта - а зачем нам системы типов тогда? давайте неуспешное тоже кодировать значением, например пустым списком, или там каким-то bottom value
Ну значение может быть по логике. Т.е. какой-нибудь fallback по бизнес-логике - это нормально.
источник

КП

Крылатый Пегас... in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Shub Niggurath
хз, я не вижу никакого выигрыша, ни от функции, ни от логики. кодировать логику дефолтным значением резалта - а зачем нам системы типов тогда? давайте неуспешное тоже кодировать значением, например пустым списком, или там каким-то bottom value
bottomless
источник

DS

Doge Shibu in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Shub Niggurath
хз, я не вижу никакого выигрыша, ни от функции, ни от логики. кодировать логику дефолтным значением резалта - а зачем нам системы типов тогда? давайте неуспешное тоже кодировать значением, например пустым списком, или там каким-то bottom value
Ну здесь не логика, здесь что-то типа, если такой-то процесс прошел успешно, то возьми значение из него, если нет - залоггируй причину и возьми такое-то fallback значение.
источник

DS

Doge Shibu in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Я могу представить случаи, где это и есть поведение по бизнес логике.
источник

SN

Shub Niggurath in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Doge Shibu
Ну здесь не логика, здесь что-то типа, если такой-то процесс прошел успешно, то возьми значение из него, если нет - залоггируй причину и возьми такое-то fallback значение.
это твое предположение. я вот смотрю на остальной код - там что-то дикое происходит, там смесь валидации с операциями и по ходу этот choice вообще не нужен, т.к. валидируются данные, создаваемые в соседнем модуле
источник

DS

Doge Shibu in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Shub Niggurath
это твое предположение. я вот смотрю на остальной код - там что-то дикое происходит, там смесь валидации с операциями и по ходу этот choice вообще не нужен, т.к. валидируются данные, создаваемые в соседнем модуле
Я же не знаю контекста, я описываю скорее где может понадобится функция подобного плана в общём случае.

Как пример, в расте тот же unwrap_or_else есть из коробки на резалте именно с таким поведением.
источник

SN

Shub Niggurath in F# Flood: ПДД made functional, making illegal state INGIBDDdale
@grishace есть где-то нормальный гайд по asyncseq? кроме блога петрищчика и недописанной офдоки ничего не находится
источник

оГ

отец Григорий... in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Shub Niggurath
@grishace есть где-то нормальный гайд по asyncseq? кроме блога петрищчика и недописанной офдоки ничего не находится
Это оно :(
источник

I

Igor in F# Flood: ПДД made functional, making illegal state INGIBDDdale
@vshapenko а ваше приложение на f# можно скачать/посмотреть? под android
источник

VS

Vasily Shapenko in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Пока нет
источник

I

Igor in F# Flood: ПДД made functional, making illegal state INGIBDDdale
давайте уже, а то нечем крыть что "на xamarin не пишут софт"
источник

VS

Vladimir Shchur in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Shub Niggurath
@grishace есть где-то нормальный гайд по asyncseq? кроме блога петрищчика и недописанной офдоки ничего не находится
источник

AH

Ayrat Hudaygulov in F# Flood: ПДД made functional, making illegal state INGIBDDdale
А можно было сразу через match!
источник

AH

Ayrat Hudaygulov in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Я кстати не проверял, там возможно чуть получше кодген
источник

AH

Ayrat Hudaygulov in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Надо посмотреть
источник