Ayrat
async/await синтаксис проще в с#. но не композабл :(
прости конечно а чем он проще-то? async { let! abc = asyncMethod() return abc } vs async Task<T> ... { var abc = await asyncMethod(); return abc; }
Ayrat
Голодающий Ирландии :)
Это возможно, не думаю что там кроме Джета кто-то на F# рисует)
Ayrat
Хитрюга... а зачем тогда AwaitTask и RunSyncronously придуманы?
AwaitTask == интероп RunSync == Task.Result, если не учитывать что асинки холодные, таски горячие
Ayrat
но вообще слухи про нативный таскБилдер в кор либе давно ходят
Éminence grise
А ну пиши: task { let! abc = asyncMethod() return abc }
Ayrat
А ну пиши: task { let! abc = asyncMethod() return abc }
ну вот такой таскБилдер пока только внешний
Hog
Для таск билдера нужен экстра неймспейс нетривиальный
Éminence grise
Вот это и есть преимущество, которого в C# никогда не будет.
Hog
Я про него только из кишочков Сатурна узнал
Hog
Вот это и есть преимущество, которого в C# никогда не будет.
Ну я и написал же - некомпозабл. Но среднестатистическому девелоперу с# вариант проще
Hog
Аблин - Async.FromBeginEnd - ваще за гранью :)
Ayrat
Ну я и написал же - некомпозабл. Но среднестатистическому девелоперу с# вариант проще
ну через билдеры же разница прям еле заметна. Я соглашусь что таскБилдер надо в кор либу затягивать
Ayrat
Аблин - Async.FromBeginEnd - ваще за гранью :)
так это как раз офигенный конструктор. Async же так объявлен в кор либе, через континуейшны
Éminence grise
Там нельзя в концевую рекурсию.
Éminence grise
Task.Factory.FromAsync - по мне то же самое
Roman
Вообще круто когда оба языка используются.
Roman
Каждый на своем месте
Ayrat
За гранью понимания :)
я тебе не то сказал, вот каноничный конструктор асинков
Ayrat
даём что делать onSuccess, что делать onError и что далеть onCancelled
Ayrat
и получаем Async!
Roman
Тоже самое что TaskComplitionSource
Éminence grise
Ну да, промайс чистый
Hog
Нувоот :( прислали письмо, что на менторшип ф# не попал в этот раунд :( мало менторов, а тех, кому он нужен, в 100500 раз больше
Roman
Или чтобы тебя менторили?
Hog
Менторить хотел?
Наоборот же :)
Hog
Чтобы меня
Vladislav
гсомек вроде с год назад тоже не попал
Hog
Но это ещё до чатика было!
Roman
Так мы здесь на что?
Roman
Как заменторим
Éminence grise
даём что делать onSuccess, что делать onError и что далеть onCancelled
Не даем фунцию, которая вернет три обработчика 😊
Romɑn
Я понимаю, что немного бред, но все же. МБ можно как-то DU заэкстендить?)
Romɑn
всмысле у меня есть ветка | Props of smt и я хотел бы не писать всегда ее тип В каждом новом DU
Romɑn
type One = | One | Props of smt type Two = | Two | Props of smth
Vasily
Кортеж
Ayrat
или это то что ты хочешь?
Pavel
похоже наследовать :)
Romɑn
или это то что ты хочешь?
я не хочу постоянно пистаь Props
Pavel
это тоже старая идея которой не сбыться
Ayrat
расширяемых DU нет. надо интерфейсы же ж
Romɑn
это понятно, но тут без DU никак
Romɑn
нуок
Pavel
интерфейсы не чекаются
Pavel
матчером
Romɑn
интерфейсы не чекаются
хинди мать его мильнер
Ayrat
интерфейсы не чекаются
потому что расширяемы, чо их чекать?
Ayrat
хинди мать его мильнер
так вам шашечки или ехать?)
Romɑn
шишечки и валяться
Pavel
потому как забудешь во всех местах поправить
Romɑn
Hog
Как заменторим
Почему-то проассоциировалось с - "А потом такая борьба за мир начнётся, что камня на камне не останется!" :)
Hog
интерфейсы не чекаются
match a with b when (a ?: IYourInterface) -> (b :?> IYourInterfcae)...
Vasily
Не так
Vasily
?:> упадет в рантайме
Vasily
Если не получится приведения
Vasily
Точнее :?>
Vasily
правильнее match a with | :? IYourInterface as b->...
Hog
ок
Pavel
а when на что?
не на что. он для интерфейсов не сильно поможет
Pavel
вот надо тебе новый интерфейс передать а в матче забыл его прописать
Pavel
а матчей у тебя штук 20
Pavel
гдето прописал гдето нет
Vladislav
чой-та?
получится C# 8 )
Pavel
и?
Hog
так | _ -> никто не отменял
Pavel
и что в нем?