@Fsharp_chat

Страница 665 из 772
Vasily
13.08.2018
14:52:43
1. Вытащить наружу апи для работы с клубком процессоров

2. Апи для инициализации всего этого добра

Roman
13.08.2018
14:53:28
=) Ладно, спс, покопаю в эту сторону

Vasily
13.08.2018
14:53:54
Т.е. то, как у тебя там процессоры завязаны, снаружи быть видно не должно

Google
Vasily
13.08.2018
14:54:30
Я делал так - делал рекорд с полями-функциями, которые инкапсулировали работу с процессорами

Roman
13.08.2018
14:54:34
да, это я уже спрятал. Пробовал вытащить все наружу - вышло очень плохо

Vasily
13.08.2018
14:55:08
Далее

Сейчас ты скорее всего мейлбоксы создаешь сразу

Имеет смысл вынести создание мейлбоксов в функцию create, которая принимает параметром ту функцию, которую ты собираешься инжекстить

Можно упороться и создать мейлбокс для хранения этой функции

Roman
13.08.2018
14:58:50
Всем привет! Разбираюсь с f#, надеюсь скоро стать активным участником комьюнити
Круто, вливайся) fsharplang.ru Задавай вопросы. С присоединением

Roman
13.08.2018
14:58:59
Имеет смысл вынести создание мейлбоксов в функцию create, которая принимает параметром ту функцию, которую ты собираешься инжекстить
вот так сейчас делаю: let commandAgentFn commands msg = match msg with | Cmd cmd -> cmd::commands | Flush -> Snake.mergeCommands commands |> Commands |> snakeAgent.Post [] let commandAgent = [] |> Mailbox.buildAgent commandAgentFn |> Agent это то, что ты имеешь ввиду?

Vasily
13.08.2018
14:59:50
Ну скорее всего да

ЧТобы MailboxProcessor.STart вызывался отдельно

Ты змейку пишешь на мейлбоксах, шоле?

Roman
13.08.2018
15:15:15
ага)

Vasily
13.08.2018
15:15:31
Ясненько-понятненько

Google
Roman
13.08.2018
15:15:36
да не такой уж наркоман

Roman
13.08.2018
15:48:05
Как можно было бы сделать интерфейсы для DU? Типа принимаемый тип может быть Или TypeOne или TypeTwo. Немного похоже на union types, о которых тут разговор был.

Vasily
13.08.2018
15:49:46
Конкретно так не получится

Через наследование и констрейнты только, по идее

Roman
13.08.2018
15:53:59
Как был бы хорош union

Vasily
13.08.2018
15:55:40
Было бы неплохо, да

По факту, это анонимный du

Roman
13.08.2018
16:21:53
По факту, это анонимный du
Ага, но было бы круто, если бы он принимал ещё и тэги с нужной сигнатурой и из существующих DU

Roman
13.08.2018
16:29:38
Так не прокатит
Да я понимаю. Поэтому и говорю про интерфейс)

Pavel
14.08.2018
06:23:08
вот так сейчас делаю: let commandAgentFn commands msg = match msg with | Cmd cmd -> cmd::commands | Flush -> Snake.mergeCommands commands |> Commands |> snakeAgent.Post [] let commandAgent = [] |> Mailbox.buildAgent commandAgentFn |> Agent это то, что ты имеешь ввиду?
я вот тоже похожую штуку у себя попользовал: type private BufferedMsg<'T> = | Store of 'T | Flush of ('T -> unit) type MessageBuffer<'T> () = let buffer = MailboxProcessor.Start (fun inbox -> let rec store (queue: Queue<'T>) = async { let! msg = inbox.Receive () match msg with | Store m -> queue.Enqueue m return! store queue | Flush f -> return! flushing queue f } and flushing queue f = async { while queue.Count <> 0 do f (queue.Dequeue ()) return! pass f } and pass f = async { let! msg = inbox.Receive () match msg with | Store m -> f m return! pass f | Flush newF -> return! pass newF } store (new Queue<'T>())) member __.Store data = buffer.Post (Store data) member __.Flush receiver = buffer.Post (Flush receiver) но очень хочется найти более приличный способ нескольким мейлбоксам циклически взаимодействовать (без акки)

Friedrich
14.08.2018
06:38:00
Привет!

Ayrat
14.08.2018
10:34:54
Ох ты ж ёжик, Ажурные функции V2 починили. FSharp.Core 4.5.2 завёлся со всеми прелестями в виде ValueOption

помните я говорил что они говно? они стали гораздо менее говно пару дней назад

https://github.com/Azure/app-service-announcements/issues/129

Не могу пингануть Михаила Шилкова, если кто может пинганите за меня плз)

code4aman
14.08.2018
11:23:04
Ох ты ж ёжик, Ажурные функции V2 починили. FSharp.Core 4.5.2 завёлся со всеми прелестями в виде ValueOption
Интересно, по сравнению с C# большая ли разница в затратах ресурсов?

Ayrat
14.08.2018
11:24:43
Интересно, по сравнению с C# большая ли разница в затратах ресурсов?
там разница только в эмитируемом IL коде https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/csharpcore-fsharpcore.html

Google
Ayrat
14.08.2018
11:25:01
ажурному рантайму-то начихать какие .net dll перемалывать

из приведённой ссылки можно заметить что F# и C# абсолютно идентичны по скорости в 90% тестах. В одном сильно тупит C#, в другом F#, в остальных там разница на проценты

так что любителям ЦПУ перформанса жаловаться не на что

Klei
14.08.2018
17:49:30
Я в раздумьях. Включил camelCase в FSharpLu.Json и после нескольких часов боданий обнаружили, что case-ы enum-оподобного DU типа ENUMCASE он преобразует в eNUMCASE. Считать это багом или фичей?

Ivan
14.08.2018
18:39:21
Мне кажнтся можно дать чейнж реквест на кастомный name convertor

Хотя очень бы хотелось нормального descriminated union провайдера наконец, что бы было что то вроде: Option<int> -> Some(5) -> { Some" : 5 } None -> { "None" : true } Result<int, string> -> Ok(5) -> { "Ok" : 5 }, Error("some errror") -> { "Error": "some error" }

Klei
14.08.2018
18:45:01
Я максимум могу тот же вопрос задать там. У меня нет понимания, как оно должно выглядеть в идеале.

Ivan
14.08.2018
18:46:31
Если под тайп скрипт - то похоже на то что дает FSharpLu. Только case-insentivity. А так - мне кажется - мой вариант

Ayrat
14.08.2018
18:55:59
Хотя очень бы хотелось нормального descriminated union провайдера наконец, что бы было что то вроде: Option<int> -> Some(5) -> { Some" : 5 } None -> { "None" : true } Result<int, string> -> Ok(5) -> { "Ok" : 5 }, Error("some errror") -> { "Error": "some error" }
Да его ж написать на Newtonsoft.Json раз плюнуть. У меня например в проекте кастомный конвертер для Single Case DU сделан который type UserId = UserId of int превращает в { "UserId": 1 } а не в { "Case": { "Tag": "UserId", "Value": 1 }}

т.к. оно достаточно специфично и не является сериализацией в прямом смысле потому и не добавляют в Json.Net

Igor
14.08.2018
18:56:47
@fvnever ты fantomas не трогал? (вижу ты его форкнул) Кто-нибудь знает его текущий статус, есть там подвижки по переходу на кор?

Ayrat
14.08.2018
18:57:09
т.е. DU так сериализуется криво чтобы его потом можно было десериализовать

Vladimir
14.08.2018
19:46:22
https://blogs.msdn.microsoft.com/visualstudio/2018/08/14/visual-studio-2017-version-15-8/

Vasily
14.08.2018
20:04:03
Надо будет глянуть

А то в райдере все быстро, конечно

Но бывает, что не хватает чего-то

Roman
14.08.2018
20:26:36
Привет!

Denis
14.08.2018
20:27:13
Привет!
Привет

Google
Friedrich
15.08.2018
00:34:21
Привет.

Artemy
15.08.2018
07:20:13
https://blogs.msdn.microsoft.com/visualstudio/2018/08/14/visual-studio-2017-version-15-8/
Кто-нибудь проверял, ничего не поломано?

> Automatic, transactional brace completion is now available for (), [], {}, [||], and [<>] brace pairs. ?

Vasily
15.08.2018
11:15:12
КОлллеги

Какая-то хрень с райдеров

*райдером

Делаю проект под 4.5.1

Подключаю xunit

Пытаюсь запустить тест

Пишет Fsharp.Core.4.4.1.0 not found

Откуда это вообще, хз

Roman
15.08.2018
11:17:34

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