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
Блин, для начала было бы неплохо понять, с чем мы интеропимся.
Admin
Evgeniy
11.05.2018
12:02:11
Я сначала думал, что речь по 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:31
В зависимости от прочитанного флага
Вот и думай, как делать
Чтобы без особых приседаний
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.