
Mariia
11.05.2018
08:48:20
мб не кидали еще, пишут добавили веб кор темплейт

Evgeniy
11.05.2018
08:49:35

Vlad
11.05.2018
08:51:23

Vasily
11.05.2018
09:05:24
Коллеги, есть вопрос, как правильно организовать структуру данных

Google

Roman
11.05.2018
09:06:02

Vasily
11.05.2018
09:06:18
Контекст - чтение данных из потока
В ответ на запрос
В сообщении есть заголовок
И доп данные
Которых может не быть, если в резалте хедера приехала ошибка
Так вот
В какую бы это структуру данных все завернуть, чтобы нормально с интеропом жило?

Roman
11.05.2018
09:09:06
Мало контекста)

Vasily
11.05.2018
09:09:18
Ща
https://sharplab.io/#v2:DYLgZgzgNAJiDUAfA9gBwKYDsAEBlAnhAC7oC2AsAFBH4bYBK6EqymE6AEugIYzoBOAXgDeuAK4BjCUwggARsmTAAvlRp0AsjO4BzdI2at2AHgDk3AHwiuvASAMs2nHn34BuACLci3EOeVAA
ВОт пока примерно так

Friedrich
11.05.2018
09:12:31
Для интеропа проще всего заюзать нулл.

Google

Friedrich
11.05.2018
09:12:42
Всякие там Option в интеропе выглядят уже не очень красиво.

Vasily
11.05.2018
09:12:47
Ну вот вопрос в том, как его зающать

Friedrich
11.05.2018
09:12:49
Но можно и их, если хочешь.

Vasily
11.05.2018
09:12:57
Если я ожидаю int64, например
В 'a

Friedrich
11.05.2018
09:13:08
Я вот, например, нормальненько написал самодельный Result в сишарповой проге и везде юзаю.

Vasily
11.05.2018
09:13:27
Или кастомную структуру данных, но что-то пошло не так

Friedrich
11.05.2018
09:13:35

Vasily
11.05.2018
09:13:48

Friedrich
11.05.2018
09:13:50
Option понемногу становится более привлекательным :)
Или Either

Vasily
11.05.2018
09:14:05
Но у меня есть интероп :)
В целом, конечно, можно Option.toNullable попробовать

Friedrich
11.05.2018
09:14:48
Если не хочешь FSharp.Core наружу выставлять — можешь определить свою версию опшена.

Vasily
11.05.2018
09:14:52
Но тут тоже много вопросов

Friedrich
11.05.2018
09:15:17

Vasily
11.05.2018
09:15:31
Мне пока просто не хочется wpf часть на f# переписывать, хотя, чую, придется :)
Выкрутился я с интеропом в итоге
НО хитро

Bonart
11.05.2018
11:08:28

Google

Vasily
11.05.2018
11:11:34
https://sharplab.io/#v2:DYLgZgzgNAJiDUAfA9gBwKYDsAEBlAnhAC7oC2AsAFBH4bYBK6EqymE6AEugIYzoBOAXgDeuAK4BjCUwggARsmTAAvlRp0AItyLcN6YOgDm29AB4A5NwB82Qdj4HjJbMjDYxmAJZEAtFctqtOjYALIy3IbojMys7BbW2J6YJPyY3MDYABQAFjx8/LAgWjp6jibxVgCUdlTYpGRyAthE2Z4QAHQAkhAAoqSoNHYwgphiwMC19aSN/M2tHVy8AoK5S/yTDU0tbe3F3NgA7t7Z2JFEmdWk2hInMIfH2LXYzy+vb+8fz4ij43783G1gplOpgAG7pTwwADyGH+RE8rB6AA9pAMEZgLpUnp8cbivki/EiumDkABrdAXJ61IA==
Ну я эксепшном обошелся

Vladimir
11.05.2018
11:18:29
а если 'a будет Nullable<int> ?

Bonart
11.05.2018
11:19:17

Vasily
11.05.2018
11:28:29
Там в общем-то дерево примитивов обычно

Friedrich
11.05.2018
11:31:47
А мб даже и Bind.
Но их можно экстеншенами сделать, чтобы тип не засорять.

Vladimir
11.05.2018
11:34:46

Vasily
11.05.2018
11:35:40
Ну в джаве erasure types
У меня джава на той стороне протокола

Roman
11.05.2018
11:39:28

Vasily
11.05.2018
11:49:10

Roman
11.05.2018
11:53:52
Кстати, мб стоит посмотреть на какую-то либо специально для склейки f# с c#?

Vasily
11.05.2018
11:54:14
А у нас такие есть?

Roman
11.05.2018
11:54:16
Если ее нет, то можно написать, чтоб покрывала основные кейсы
Я не припомню, кроме либы с тасками

Evgeniy
11.05.2018
11:55:09

Google

Vlad
11.05.2018
11:56:06

Evgeniy
11.05.2018
11:56:15
https://pblasucci.wordpress.com/2016/12/30/betterapi/
Хорошая статья.

Vasily
11.05.2018
11:56:23
Там проблема не в том, чтобы выставлять
А в том, как обыграть присутствие\отсутствие данных в зависимости от хедера

Vlad
11.05.2018
11:57:11
https://fsharp.org/specs/component-design-guidelines/#5-guidelines-for-libraries-for-use-from-other-net-languages

Roman
11.05.2018
11:57:31

Evgeniy
11.05.2018
12:00:50
Блин, для начала было бы неплохо понять, с чем мы интеропимся.
Я сначала думал, что речь по C#. Но потом:
У меня джава на той стороне протокола
Запутался, короче. :)

Vasily
11.05.2018
12:03:23
На этой стороне у меня c# + f#
Серверная часть на яве
Шо тут непонятного? :)

Evgeniy
11.05.2018
12:03:44
И в каком месте ты решаешь свою проблему?

Vasily
11.05.2018
12:04:09
На клиентской стороне, естественно

Evgeniy
11.05.2018
12:04:28
На стыке C# и F#? В какую сторону?

Vasily
11.05.2018
12:12:01
В сторону c#
В общем, там данные опционально приезжают
В зависимости от прочитанного флага

Google

Vasily
11.05.2018
12:12:48
Вот и думай, как делать
Чтобы без особых приседаний

Evgeniy
11.05.2018
12:15:14

Vasily
11.05.2018
12:19:02

Evgeniy
11.05.2018
12:19:17

Vasily
11.05.2018
12:19:43
Ну да, если флаг не проверил, сам себе злобный буратино

Evgeniy
11.05.2018
14:34:43
Привет.

Vasily
11.05.2018
14:35:58
Сделал в итоге в TryGet стилистике

Pavel
11.05.2018
15:18:31

Vasily
11.05.2018
15:22:23
Потому как сильно кастомный бинарный протокол

Pavel
11.05.2018
16:07:56
тем более. парсеры на f# всяко приятнее писать

Vasily
11.05.2018
16:11:20

Evgeniy
11.05.2018
16:34:37
https://github.com/fsharp/fslang-design/issues/230#issuecomment-388408972
Хорошо, сегодня пятница, можно обсудить бесполезные компиляторые идеи. :)
Как думаете, был бы интересен типизированный format placeholder для printf? Аналог %A или %O, но с указанием любого типа.

Roman
11.05.2018
17:25:55
Это как, например?

Klei
11.05.2018
17:25:56

Evgeniy
11.05.2018
17:26:29
Да. Я про правила превращения строк в PrintfFormat.