@Fsharp_chat

Страница 520 из 772
Evgeniy
21.03.2018
09:54:10
Насколько я помню, ref реализуется через стандартный record, это значит, что он создает мелкий объект в куче.

Бессмысленный разговор, пока нет кода и бенчмарков.

Pavel
21.03.2018
09:59:14
На одном из интервью мне рассказывали, что у них garbage collector дотнетовый не справляется при принятии котировок с биржи, поэтому они все на GC-less штуках пишут.

Google
Pavel
21.03.2018
09:59:40
Типа надо знать как оно устроено и т.п.

И еще они свой сериализатор написали.

^^^ это к тому, что надо сначала измерять, а потом оптимизировать

Pavel
21.03.2018
10:01:38
Храни, меняй!

Ну просто к примеру linked-list это immutable структура, которая очень дешево изменяется в некоторых вещах.

?‍?
21.03.2018
10:29:11
Где почитать в какую память F# закидывает типы? А то возникают вопросы типа: Как понимать разницу "type [<Struct>] DUS" и "type DUC"? type [<Struct>] internal DUS = // Размер в 12 byte или 8 byte как на C++? | B1 of valB1_1 : int | B2 of valB2_1 : int * valB2_2 : int Если сделать значения как int ref, то по идее будут храниться только ссылки на int'ы, а сам DUS ляжет в стек и массив из DUS тоже. а массив из DUC в стеке будет хранить ссылки на элементы массива в куче или классы в массиве ложатся в стек?

Vasily
21.03.2018
10:30:17
Ну можно открыть дотпиком сборку, и посмотреть, какой сишарпный код получается

А на основе с# уже проще делать выводы про память

Siarhei
21.03.2018
10:31:27
Vasily
21.03.2018
10:31:52
Ну дык надо смотреть

Evgeniy
21.03.2018
10:31:56
О_О а какой эквивалент будет собран?
https://sharplab.io/#v2:DYLgZgzgNAJiDUAfA2gHgMoBcBOBXAxpgHwC6AsAFCYCeADgKYAEAogLYCGAlsIwLwsdujAPZhGEHJwB2AcyA===

Siarhei
21.03.2018
10:34:47
кхм, а с точки зрения того же newtonsoft.json во что он превратится? { Item: '' } ?

Google
Evgeniy
21.03.2018
10:38:44
кхм, а с точки зрения того же newtonsoft.json во что он превратится? { Item: '' } ?
Наверное, если нативный newtonsoft.json использовать.

?‍?
21.03.2018
11:01:28
https://sharplab.io/#v2:DYLgZgzgNAJiDUAfA2gHgMoBcBOBXAxpgHwC6AsAFCYCeADgKYAEAogLYCGAlsIwLwsdujAPZhGEHJwB2AcyA===
Спасибо. Норм так в структуре int ref => FSharpRef<int>, а в классе оно же с readonly, и да, как и предполагал, структуры жиреют с каждым элементом каждой новой ветки (но в таком случае *странно*, что не поддерживаются общие поля).

Evgeniy
21.03.2018
11:12:48
Если тебе нужен какой-то очень хитрый и экономный вариант размещения данных в памяти, ты всегда можешь написать нужные структуры сам.

w00t?! https://twitter.com/eiriktsarpalis/status/976403891414806529

?‍?
21.03.2018
11:40:41
Если тебе нужен какой-то очень хитрый и экономный вариант размещения данных в памяти, ты всегда можешь написать нужные структуры сам.
В смысле написать свой аналог DU, но с общими полями? Мне кажется на уровне расшинения определений языка можно что-то поломать, [начинать с головы, тк подобное будет в новинку + знаний не хватит, F# занимаюсь чисто в свободное время в подходе геймификации обучения, типа, что будет, если так или эдак]. На плюсах как-то обходился упаковкой в union, чтобы лежало внутри структуры, а тут множество ограничений по дизайну (на самом деле приятно работать в ограничениях, возможно, это пока приятно). Просто читал при знакомстве с языком, что "можно писать, не задумываясь о...", но выходит, что это просто маркетинговых ход.

?‍?
21.03.2018
11:44:26
Evgeniy
21.03.2018
11:45:06
Ну, ты много с C++ работаешь? А с C#?

?‍?
21.03.2018
11:48:06
Ну, ты много с C++ работаешь? А с C#?
С++ достаточно, в основном работа с потоками и упаковка структур (DirectX 11 тоже грыз), на C#, с 4.0 по сих

Evgeniy
21.03.2018
11:49:04
Ок. Нужно просто понимать, что ФП удобства — штука небесплатная. :)

Только и всего.

?‍?
21.03.2018
11:49:38
Evgeniy
21.03.2018
11:50:11
В смысле производительности.

Обмениваешь толику производительности на поддерживаемый и понятный код.

Evgeniy
21.03.2018
11:52:21
?‍?
21.03.2018
11:54:39
Это шутка такая? :)
Из видео евангелиста @shwars, где он про ФП рассказывает: "Если вы будете такое писать в продакшн, то вас не уволят, так как никто не будет знать как это работает"

Google
Evgeniy
21.03.2018
11:56:25
А, ок. Не, я про хорошие добрые штуки, вроде иммутабельности, сборки мусора, алгебраических типов данных.

Anna
21.03.2018
11:58:59
А кстати, я где-то упустила момент, почему в мейнстрим языки не завезли DU. Какое-то техническое ограничение, про которое я не помню?

Pavel
21.03.2018
11:59:20
В TypeScript вроде есть

Это единственное, что меня привлекает, чтобы посмотреть на него

Roman
21.03.2018
12:00:34
Anna
21.03.2018
12:00:41
В TypeScript вроде есть
То есть до java и c# просто медленно доходит?

Pavel
21.03.2018
12:01:22
В C# тоже будет скоро, про джаву хз, на днях десятая же релизнулась?

Anna
21.03.2018
12:07:23
В C# тоже будет скоро, про джаву хз, на днях десятая же релизнулась?
Понятно, спасибо! А от джавы я далека пока что :)

?‍?
21.03.2018
12:08:02
А, ок. Не, я про хорошие добрые штуки, вроде иммутабельности, сборки мусора, алгебраических типов данных.
Казалось бы мы под защитой GC, однако, по работе коллеги встречали "службы" на Net, что текут, вплоть до максимума доступной памяти виртуалки. Так что аккуратно надо делать не только на ++

Evgeniy
21.03.2018
12:11:05
Я совсем про другое.

Ну ок, проехали. :)

Evgeniy
21.03.2018
12:15:06
Больше ада! :) https://twitter.com/Bizmonger/status/976230970331402240

Roman
21.03.2018
12:19:04
GC от кривых рук защитить никак не может
от большей части кривизны защищает

до определенного угла

а дальше талант начинается

Denis
21.03.2018
12:20:19
Талант чтобы не текло или чтобы не аллоцировать больше чем нужно?)

Roman
21.03.2018
12:20:49
Anna
21.03.2018
12:21:10
потому как без паттерн матчинга работа с ними неприятна
логично. А паттерн матчинг очень не хотят почему-то (вроде считается что усилия не стоят выхлопа)

Google
Roman
21.03.2018
12:21:40
Evgeniy
21.03.2018
12:27:07
@AnutaU



Отличная картинка, я считаю. Спасибо Василию.

Roman
21.03.2018
12:27:48
он становится знатным троллем

Evgeniy
21.03.2018
12:28:16
Он классный.

Anna
21.03.2018
12:36:00
Bonart
21.03.2018
12:38:11
потому как без паттерн матчинга работа с ними неприятна
Это масло масленое - одно без другого нафиг не нужно.

от большей части кривизны защищает
GC от кривизны не защищает вообще никак

Roman
21.03.2018
12:40:25
GC от кривизны не защищает вообще никак
конечно, он от мусора защищает

Klei
21.03.2018
12:41:26
GC от кривизны не защищает вообще никак
Если есть криворукость при очистки памяти (как когда-то было у меня), то защищает.

Evgeniy
21.03.2018
12:42:23
что-то я не поняла прикола ?
Это пост-пост-ирония.

Bonart
21.03.2018
12:44:52
Если есть криворукость при очистки памяти (как когда-то было у меня), то защищает.
Ничуть. Подписался и не отписался - лови утечку и на шарпе. Управляемая среда позволяет мгновенно выделять память и относительно быстро чистить. А за кривые руки наказание то же самое.

Pavel
21.03.2018
14:31:35
что-то я не поняла прикола ?
то что вставили в c# паттерн матчингом называется но не является

Это масло масленое - одно без другого нафиг не нужно.
матчить можно не только DU. так что нужно

Evgeniy
21.03.2018
15:54:28
Статья про монадки. https://twitter.com/tomaspetricek/status/976432895140270080

Roman
21.03.2018
15:59:07
µA ◦ TµA = µA ◦ µTA

Google
Vlad
21.03.2018
16:11:56
µA ◦ TµA = µA ◦ µTA
Эльфийский

Vasily
21.03.2018
16:16:03
Коммутативность жеж вроде

Или ассоциативность

Все время путаю

Roman
21.03.2018
16:19:49
Evgeniy
21.03.2018
16:37:48
Эльфийский
А мне норм!

Но если кому-то хочется подробнее разобраться именно в этой части, то есть хорошее описание: http://anton-k.github.io/ru-haskell-book/book/15.html

https://twitter.com/MangelMaxime/status/976508556852842497

Vlad
21.03.2018
18:07:18
w00t?! https://twitter.com/eiriktsarpalis/status/976403891414806529
А какие юзкейсы у него? Как у экспрешенов в шарпе?

Evgeniy
21.03.2018
18:08:29
Да, схожие.

Есть более крутая штука, которую еще не портировали на netstandard. https://github.com/eiriktsarpalis/QuotationCompiler

На ней можно полноценный staged programming изображать.

Собирать код в рантайме, компилировать, исполнять.

https://en.wikipedia.org/wiki/Multi-stage_programming

Evgeniy
21.03.2018
18:11:29
Я не знаю, наверное, просто кому-то нужно этим заняться.

Vlad
21.03.2018
18:13:36
Надо посмотреть потом

Evgeniy
21.03.2018
18:15:25
Правда, еще неплохо было бы сгладить углы в квотировании. https://github.com/fsharp/fslang-suggestions/issues/584

Vladimir
21.03.2018
18:19:08
Мой баг перекочевал на родину) https://github.com/Microsoft/visualfsharp/issues/4591

Vladimir
21.03.2018
18:24:51
Должны и твой рассмотреть)

Klei
21.03.2018
18:44:45
https://twitter.com/MangelMaxime/status/976508556852842497
> Everything below relates to what at the time of writing is the current version of Fable v1.3.11 and the current version of F# v4.3 Что здесь на самом деле означает 4.3?

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