
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
Типа надо знать как оно устроено и т.п.
И еще они свой сериализатор написали.
^^^ это к тому, что надо сначала измерять, а потом оптимизировать

??
21.03.2018
10:01:30

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

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

Google

Evgeniy
21.03.2018
10:38:44

??
21.03.2018
11:01:28

Evgeniy
21.03.2018
11:12:48
Если тебе нужен какой-то очень хитрый и экономный вариант размещения данных в памяти, ты всегда можешь написать нужные структуры сам.
w00t?!
https://twitter.com/eiriktsarpalis/status/976403891414806529


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


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

??
21.03.2018
11:44:26

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

??
21.03.2018
11:48:06

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

??
21.03.2018
11:49:38

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

??
21.03.2018
11:51:47

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

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

Anna
21.03.2018
12:07:23

??
21.03.2018
12:08:02

Evgeniy
21.03.2018
12:11:05
Я совсем про другое.
Ну ок, проехали. :)

Pavel
21.03.2018
12:14:19

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

Pavel
21.03.2018
12:16:52

Roman
21.03.2018
12:19:04
до определенного угла
а дальше талант начинается

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
Он классный.

Bonart
21.03.2018
12:28:35

Anna
21.03.2018
12:36:00

Bonart
21.03.2018
12:38:11

Roman
21.03.2018
12:40:25

Klei
21.03.2018
12:41:26

Evgeniy
21.03.2018
12:42:23

Bonart
21.03.2018
12:44:52

Klei
21.03.2018
12:46:13

Pavel
21.03.2018
14:31:35

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

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

Evgeniy
21.03.2018
18:08:29
Да, схожие.
Есть более крутая штука, которую еще не портировали на netstandard.
https://github.com/eiriktsarpalis/QuotationCompiler
На ней можно полноценный staged programming изображать.
Собирать код в рантайме, компилировать, исполнять.
https://en.wikipedia.org/wiki/Multi-stage_programming

Vlad
21.03.2018
18:10:54

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

Vlad
21.03.2018
18:23:24

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

Klei
21.03.2018
18:44:45