@Fsharp_chat

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

Evgeniy
11.05.2018
08:49:35
мб не кидали еще, пишут добавили веб кор темплейт
Ага. И кажется, не тот, который ждали в сообществе — без Giraffe.

Vlad
11.05.2018
08:51:23
Ага. И кажется, не тот, который ждали в сообществе — без Giraffe.
надо кстати проверить потом, фиксанули ли они мой ишуй с разором

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

Google
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
Если я ожидаю int64, например
Ок, то есть ты хочешь какой-то контейнер, в который бы влазили и ref, и value type?

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
Ок, то есть ты хочешь какой-то контейнер, в который бы влазили и ref, и value type?
Мне пришлось гибрида сделать, иначе на ссылочных типах оверхед выпирал

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
Ну я эксепшном обошелся
А можно было структуру NotNull<T> наваять

Vasily
11.05.2018
11:28:29
а если 'a будет Nullable<int> ?
Ну, в предметной области у меня такого нет

Там в общем-то дерево примитивов обычно

А можно было структуру NotNull<T> наваять
Ну не знаю. Там какие-то пляски с рефлекшном

Vladimir
11.05.2018
11:34:46
Ну, в предметной области у меня такого нет
у меня просто сейчас интероп с джавой, они это легко делают)

Vasily
11.05.2018
11:35:40
Ну в джаве erasure types

У меня джава на той стороне протокола

Roman
11.05.2018
11:39:28
Мне пока просто не хочется wpf часть на f# переписывать, хотя, чую, придется :)
Я когда с проблемой интеропа и Option столкнулся, наружу выкинул функцию getValueOrDefault. И со стороны сишарпа добавил просто обертку над тем, что из фшарпа приходит. На мой вкус приятней, чем пляски с делегатами и исключениями

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

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

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

Я не припомню, кроме либы с тасками

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

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
Чтобы без особых приседаний
Я думаю, что getValueOrDefault лучше, чем исключение. Или даже эмуляция Match.

Vasily
11.05.2018
12:19:02
Я думаю, что getValueOrDefault лучше, чем исключение. Или даже эмуляция Match.
Ну на исключение я ж еще гварда навесил типа IsEmpty

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# всяко приятнее писать

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
Как думаете, был бы интересен типизированный format placeholder для printf? Аналог %A или %O, но с указанием любого типа.
Если под printf подразумевается вообще весь класс подобных функций, то мне бы зашло.

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

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