@Fsharp_chat

Страница 617 из 772
Ayrat
27.06.2018
09:25:57
ну и логика разная. слева ретрай повешан только на отсылку смс, справа для простоты на всю функцию с повторной авторизацией. Короче нечестно с C# обошлись

Mariia
27.06.2018
09:30:54
https://github.com/App-vNext/Polly

Подключаем и 0 разницы

Google
Ayrat
27.06.2018
09:33:41
ну тут скорее про разницу поддержки дурабельных функций из коробки в C# и F#. Для F# там типа есть comp expression НО. Даже так логика разная. Левый код не упадёт на нулёвом инпуте. Правый - недетерминирован в этом плане.

ну как не упадёт) левый упадёт с ожидаемым ексепшном, а правый хз.

Roman
27.06.2018
09:45:27
Либо в коде который возвращает string?

Просто по меому тут как раз и показано, что логика конкретного действия не размазана, а внесена в отдельную опеоацию. т.е. S из SOLID в макимуме

Ayrat
27.06.2018
09:49:09
А вдруг в билдере проверка на string.IsNullOrEmpty?
может быть, не знаю. Это не отменяет разницу в логике и намеренное получение аргумента из контекста, хотя можно было впилить input в аргументы функции и он прибиндился рантаймом. Как в примере для F# <_<

Т.е. тут не отмажешься, автор хотел наебать

Evgeniy
27.06.2018
09:50:24
Ayrat
27.06.2018
09:50:50
Я думаю, без злого умысла.
да, это пропаганда F#, так что норм)

Ayrat
27.06.2018
09:51:58
Может быть. Этого мы не знаем

Google
Ayrat
27.06.2018
09:54:37
в таких раскладах c# всегда максимально стремно изображают
это может отпугивать C#еров, т.к. они смотрят на это и думают про себя - ну и кто так пишет-то? попахивает обманом

Pavel
27.06.2018
09:54:41
а практика показывает что кол-во кода что там что там примерно сопоставимо

Ayrat
27.06.2018
09:55:19
вот если бы слева было всё обмазано лямбдачками, линком и прочими прелестями и всё равно получалось бы меньше, тогда была бы годная пропаганда

Pavel
27.06.2018
09:55:28
единственое исключение DU

Ayrat
27.06.2018
09:55:42
а практика показывает что кол-во кода что там что там примерно сопоставимо
Не, у F# точно меньше кода даже в лучших условиях для C#

уберём хотя бы { и`}`

Pavel
27.06.2018
09:56:08
Ayrat
27.06.2018
09:57:21
было. раньше. давно очен.
готов забиться что портирую код на F# на меньше строчек кода

Pavel
27.06.2018
09:57:27
Для этого автору пришлось бы написать хелперы для C#.
угу.. а в фшарпе orcestrator {} волшебно из воздуха родился. это такой же хелпер кем то писаный

Vlad
27.06.2018
09:58:33
https://twitter.com/MikhailShilkov/status/1011705530648334337
а что за таймаут справа, который слева самопальный?

это либа F# у них такая?

Ayrat
27.06.2018
09:59:14
на сколько меньше?
просто меньше) тяжело сказать насколько

Pavel
27.06.2018
09:59:33
Ayrat
27.06.2018
09:59:43
Mariia
27.06.2018
09:59:50
Для этого автору пришлось бы написать хелперы для C#.
Или заюзать либу выше которую кидала

Evgeniy
27.06.2018
09:59:52
это либа F# у них такая?
Да. Суть примера в сравнении дефолтного API и разрабатываемого API для F#.

Google
Evgeniy
27.06.2018
10:00:14
https://github.com/Azure/azure-functions-durable-extension

Ayrat
27.06.2018
10:00:40
https://github.com/Azure/azure-functions-durable-extension
там как раз нет для F# ничего

Evgeniy
27.06.2018
10:00:50
Mariia
27.06.2018
10:00:59
Evgeniy
27.06.2018
10:01:01
Это к слову о "ну и кто так пишет-то".

Ayrat
27.06.2018
10:01:05
то что ты скинул это просто дурабельные функции

Ayrat
27.06.2018
10:01:44
есть обычные Azure Functions. Есть Durable Functions, которые сохраняют свой стейт на точках евейта. Там хитрая магия.

Поддержка дурабельных функций есть только для C#. F# апи там нет. Про "кто так пишет" это я вообще про код, который сделан нарочно раздутым

Pavel
27.06.2018
10:03:58
Да. Суть примера в сравнении дефолтного API и разрабатываемого API для F#.
в таким же успехом можно сравнить дефолтное winApi и MFC. но язык то тут причем

Ayrat
27.06.2018
10:04:00
причём т.к. всё завязано на стейт машине тасков, поддержки F# async не планируется. Т.е. там надо работать с тасками из F# если хочется дурабельных функций

Evgeniy
27.06.2018
10:04:07
Кажется, в твиттер посте ничего про язык не было.

Ayrat
27.06.2018
10:06:04
Кажется, в твиттер посте ничего про язык не было.
А мне кажется в этом основной посыл твита.

Типа смотрите как F# всё компактно, не то что этот ваш C#

я так понял

Evgeniy
27.06.2018
10:06:19
?‍♂️

Ayrat
27.06.2018
10:06:31
Ну ладно. Чо мы пики ломаем и правда)

Evgeniy
27.06.2018
10:06:41
В следующий раз буду осторожнее, чтобы не бурлило.

Pavel
27.06.2018
10:06:48
А причем тут язык?
при том что если сравнивать, то не надстройку эф над апи. а надстройки це и эф. если в це запилить функциональную надстройку в руби стиле и сравнить с эф то разница стремительно нивелируется

Google
Pavel
27.06.2018
10:08:17
gsomix как обычно запретил обсуждать f# :)

Evgeniy
27.06.2018
10:41:58
Возвращаю обсуждение из пучины домыслов и демагогии в конструктивное русло. https://github.com/Azure/azure-functions-durable-extension/issues/322#issuecomment-400627910

Roman
27.06.2018
11:05:48
Все не ставляет мысль сделать имплементацию для Fable и обертку для elmish https://github.com/meteor/meteor/blob/master/packages/ddp/DDP.md

Портировать весь meteorjs на fable у меня не получилось

Evgeniy
27.06.2018
11:24:17
@artemy_b https://twitter.com/Tarmil_/status/1011651422482558976

Vladimir
27.06.2018
11:26:06
Есть задачка =) Как сделать коллекцию ключ-значение, где при добавлению нового значения по ключу считается среднее между всеми значениями? Например было (1,1) добавили (1,3) стало (1,2), потом добавили (1, 5) стало (1,3)

Vasily
27.06.2018
11:26:37
Тебе чтобы быстро считалось?

Vladimir
27.06.2018
11:27:10
Ага, и чтобы меньше места заняло

Ayrat
27.06.2018
11:27:13
А почему это коллекция?

А, по ключу же)

Vladimir
27.06.2018
11:28:03
цель - хранить только результат, не храня отдельные значения

Ayrat
27.06.2018
11:28:37
ну, среднее ты так не пересчитаешь

Vasily
27.06.2018
11:28:52
Ну чет да, странно выглядит

Pavel
27.06.2018
11:29:03
храни кол-во и сумму

Ayrat
27.06.2018
11:29:04
хотя не. достаточно хранить сумму предыдущих и кол-во предудыщих

чтобы пересчитать

Google
Ayrat
27.06.2018
11:29:10
Dictionary<int:ключ, int:кол-во добавленных * int:сумма добавленных>

и всего делов

Vladimir
27.06.2018
11:30:14
да, я вот думаю как это красиво оформить) потом же нужно эти значения быстренько считывать

Ayrat
27.06.2018
11:30:38
ну прям ппц как долго достать их словаря по ключу и одно деление сделать :D

Я уверен что это решение покроет 99.99999% перформанс нужд. Даже если ты HFT занимаешься, этого должно хватить

Vladimir
27.06.2018
11:31:48
это для MlCup =)

Ayrat
27.06.2018
11:32:47
Не, ну ты серьёзно думаешь что поиск по словарю и одно деление это недостаточно быстро?

Pavel
27.06.2018
11:32:50
ключи в каком диапазоне?

Vladimir
27.06.2018
11:33:12
хочется все сделать при добавлении, а потом ничего не делать

инты

Pavel
27.06.2018
11:34:40
точнее

Vladimir
27.06.2018
11:35:12
Сделаю наверное два дикшнари, один будет среднее хранить, а другой количество элементов хранить

Pavel
27.06.2018
11:35:18
Ayrat
27.06.2018
11:36:01
ну да, если хочется один раз посчитать, то будет Dictionary <int, int*int*int>

Vladimir
27.06.2018
11:36:07
оки

Спасибо)

Ayrat
27.06.2018
11:36:30
ток если у тебя многопоточная фигня, то ты словишь проблем

Vladimir
27.06.2018
11:37:10
я буду пытаться в ML.NET скармливать, еще не знаю как она работает, только начал

Pavel
27.06.2018
11:41:20
но если у тебя 1е6 добавлений и 1 чтение то 1е6-1 делений у тебя будут бессмыслены

Vladimir
27.06.2018
11:44:37
посмотрим, дебажить проще точно когда готовое значение есть)

Страница 617 из 772