@Fsharp_chat

Страница 162 из 772
Evgeniy
25.05.2017
06:41:56
Люди, которые пилили Power Tools, просто пилят поддержку F# в VS.

@Dolfik Поставь VF# Nightly, чтобы иметь свежие фичи и исправления.

Friedrich
25.05.2017
06:43:08
Но всё равно печально
Ха, у меня на C# в VS2015 всё время такое происходит :D

Nikolay
25.05.2017
06:43:39
Ну так powertools это же вроде не только дополнение к IDE, а там ещё библиотеки были?

Google
Evgeniy
25.05.2017
06:43:58
Какие библиотеки?

Nikolay
25.05.2017
06:58:45
А, это power pack

Evgeniy
25.05.2017
07:00:08
@Dolfik https://github.com/fsprojects/powerpack-archive

Igor
25.05.2017
07:10:54
А Fable совместим с .net core 2.0 preview 1?

Pawel
25.05.2017
07:43:14
Вот блин всю жизнь пользовался самописным сериализатором json, а тут понадобилось оптимизировать. Оказалось хвалёный Json.NET ни фига не умеет в F# из коробки не смотря на все уверения

Vasily
25.05.2017
07:43:50
Есть chiron

Но на него нет документации толком

Pawel
25.05.2017
07:44:30
это в котором надо каждую пропертю каждого класса отдельно прописывать? нафиг нафиг

Vasily
25.05.2017
07:46:14
Ну с сериализацией в json и вообще сериализацией траблы

Pawel
25.05.2017
07:46:29
Ага, меня это тоже убило.
да это аут просто. как такое могло в голову кому-то проийти ? :)

Vasily
25.05.2017
07:46:33
Когда надо сериализовать немного не в те названия полей/значения

Google
Friedrich
25.05.2017
07:47:01
да это аут просто. как такое могло в голову кому-то проийти ? :)
А я такое дофига где встречаю. В Scala много таких сериализаторов, например. Нахожу это ужасным.

Vasily
25.05.2017
07:47:20
Но почему?
Ну тут обычно сталкиваются доменные модели с форматами передачи данных

Pawel
25.05.2017
07:47:29
в хаскелях прописвать ничего не надо, всё компилятором по дефолту выводится

Vasily
25.05.2017
07:47:43
В доменной модели мне удобнее данные в одной форме представлять, при сериализации в другой

Pawel
25.05.2017
07:48:12
Ну тут обычно сталкиваются доменные модели с форматами передачи данных
имплементайия по умолчанию должна быть, кастомизация тоже

Vasily
25.05.2017
07:48:30
В JSon.net работает вроде

С помощью атрибутов

Хотя в теории должно быть что-то вроде 'a-?'a->'b)->string

Pawel
25.05.2017
07:49:37
В итоге у меня заработало на FsPickler. Вот кстати очень годная либа во всех отношениях

Astmatik
25.05.2017
07:49:52
Че-то я не понимаю, как в F# может не работать что-то, что работает в C#. И фраза про собственный сериализатор криворукостью попахивает.

Vasily
25.05.2017
07:50:07
Кстати, по пиклеру есть годная документация

?

По кастомным преобразованиям

Friedrich
25.05.2017
07:50:19
Че-то я не понимаю, как в F# может не работать что-то, что работает в C#. И фраза про собственный сериализатор криворукостью попахивает.
В F# структура объектов другая и нужен свой рефлекшен для того, чтобы получить список полей рекорда, к примеру.

Friedrich
25.05.2017
07:51:24
Господа, нубизмы и ламерства — в привате, пожалуйста (и про криворукость).

Vasily
25.05.2017
07:51:28
Давайте без переходов на личности

Google
Astmatik
25.05.2017
07:51:57
мы пока не про личности, а про фразы друг друга )

Vasily
25.05.2017
07:52:53
В приват, в приват

Astmatik
25.05.2017
07:55:02
На хабре был эпичный топик про то, как чувак написал собственный json сериализатор. Он недолго прожил, жаль, что не сохранил.

Pawel
25.05.2017
07:57:36
если работает, то совершенно по фигу какой сериализатор. вообще фиолетово

Igor
25.05.2017
08:02:50
Обычные рекорды (и вложенные) Newtonsoft.Json нормально переваривает в .net core, использую и все ок.

Nikolay
25.05.2017
08:03:00
Зачем в записях сделали option типы обязательными для заполнения?

Igor
25.05.2017
08:03:35
Там из коробки только DU не работают
Ну и не надо их сувать в json))

Nikolay
25.05.2017
08:03:57
Ну и не надо их сувать в json))
А как быть, если у тебя поле, например, IntOrString?

Даже Json Provider юзает DU

Igor
25.05.2017
08:04:34
А как быть, если у тебя поле, например, IntOrString?
Это у тебя неправильный json. Ну честно, ты и в C# так не сделаешь (без кастомных сериализаторов).

Pawel
25.05.2017
08:05:35
Там из коробки только DU не работают
не знаю что он там нормально переваривает, у меня внезапно некоторое (!) поля в рекордах после сериализации стали null

Pawel
25.05.2017
08:06:45
Так там нужно настройку прописать
ага, делать мне больше нечего как настройки прописывать)) FsPickler - и забыть

Nikolay
25.05.2017
08:07:23
И он умеет в snake_case, camelCase, PascalCase?

Pawel
25.05.2017
08:08:09
Ну и не надо их сувать в json))
ну офигеть) может вообще их выкинуть предложишь?)

И он умеет в snake_case, camelCase, PascalCase?
он работает поверх json net, так что да, умеет

Google
Nikolay
25.05.2017
08:08:55
Ну тогда под .Net Core не умеет)

Igor
25.05.2017
08:08:57
ну офигеть) может вообще их выкинуть предложишь?)
Думаю, стоит переосмыслить json если ты его сам делаешь (очень сомневаюсь что он тебе такой приходит с сервера)

Это обычный ответ Telegram Bot API
А вот формально, как отличить одно от другого? Типа спарсилось в число - значит число, нет строка. Как-то это не формализированно звучит. Я бы как строку использовал везде, хотя это конечно косяк телеграмма, который даже в C# библиотеки пролазит.

Pawel
25.05.2017
08:11:38
Думаю, стоит переосмыслить json если ты его сам делаешь (очень сомневаюсь что он тебе такой приходит с сервера)
ну как .. просто нужно как-то сохранять бизнесс-данные, которые представленны в виде типов сумм например. Можно конечно извратиться и переписать в более понятный тип для сериализатора

Igor
25.05.2017
08:14:41
А может уже есть где-то общий реп?
Когда, уже там версия 1.0 выйдет хоть?

Nikolay
25.05.2017
08:14:57
Вот подскажите, как быть. Использовал такой record: type User struct { Id: int ... LastName: string option ... } У телеграма изменилось апи, добавился ещё один опциональный тип: LanguageCode: string option Беда в том, что если я сейчас добавил бы его в рекорд, то сломал бы совместимость с библиотекой у других людей, ибо рекорд стал бы требовать инициализации поля LanguageCode, если где-то он использовался. Вопрос в том, как заранее продумать такую вещь?

Roman
25.05.2017
08:15:21
Когда, уже там версия 1.0 выйдет хоть?
Она близка, насколько я помню. Они говорят что бету уже можно использовать они API мерил не будут.

Pawel
25.05.2017
08:19:04
Вот подскажите, как быть. Использовал такой record: type User struct { Id: int ... LastName: string option ... } У телеграма изменилось апи, добавился ещё один опциональный тип: LanguageCode: string option Беда в том, что если я сейчас добавил бы его в рекорд, то сломал бы совместимость с библиотекой у других людей, ибо рекорд стал бы требовать инициализации поля LanguageCode, если где-то он использовался. Вопрос в том, как заранее продумать такую вещь?
== рекорд стал бы требовать инициализации поля LanguageCode, если где-то он использовался. это зависит от того, как будет реализована функция, создающая рекорд, какие параметры она принимает на вход. Апи должен предоставоять разумное дефолтное значение рекорда, и проблем не будет

Admin
ERROR: S client not available

Pawel
25.05.2017
08:23:16
запрещать не обязательно, достаточно сделать функцию, которая упростит для юзера создание рекорда, чтобы так не делать, ибо это не удобно и букв много

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

Roman
25.05.2017
08:33:06
Roman
25.05.2017
08:33:49
Странно, у меня с Json.Net никогда проблем не было. По мне так это самая лучшая либа для джейсона. С фшарпом дружит на ура. Никаких дополнительных настроек. А в чем конкретно проблема была?

Roman
25.05.2017
08:36:27
или если хочется рекордов, то type MyRecordType = private { Id : int; Username : string; LastName : string option } with member val Username = Username with get,set member val Lastname = //тут переопределить получение и присваивание и сериализатор может работать

Google
Pawel
25.05.2017
08:38:33
Да по фигу кто-там что подумает. Писать как душе угодно в любом случае не надо, а надо - правильно. Посмотри, как сделали конфиг Suave - дефолтная константа. Если надо какое-то поле переопределить, пишем что-то типа {defaultconfig with IP = otherValue}, ни кто не жалуется

Roman
25.05.2017
08:39:19
Ну так он запутался где какой Username а где какой Lastname.

Roman
25.05.2017
08:40:31
DU поддерживаются. Он их в Case с Field поля сериализует по умолчанию

Nikolay
25.05.2017
08:41:20
А в записях нельзя указать значение по умолчанию?

Если можно, я буду просто счастлив

Pawel
25.05.2017
08:41:48
опять всем гошечки не хватает))

не, нельзя))

надо самому определить дефолтное значение для твоего типа

Roman
25.05.2017
08:42:31
Да

У меня на работе это активно используется

Nikolay
25.05.2017
08:42:50
Меня прям расстраивают некоторые моменты в F# :(

Roman
25.05.2017
08:43:50
Я из дома могу пример jsona написать получаемого.

Roman
25.05.2017
08:43:57
тогда уж рекорд mutable полями, но не особо оно поможет
Нет, mutable это mutable , а проперти это проперти

Nikolay
25.05.2017
08:44:08
Roman
25.05.2017
08:44:42
На F# пишете? :)
Не бизнес проект

Система тестирования

Весь сервер сайд на фшарпе

Pawel
25.05.2017
08:46:37
Нет, mutable это mutable , а проперти это проперти
так а смысл если mutable компилится в проперти в IL ?

Roman
25.05.2017
08:48:45
Оно компилится в поля. А не в свойства. Зато на свойства можно повесить кастомную логику, т.е. Сделать обертку для сирализатора. Типа если у тебя рекорд с DU, оборачиваешь его в подобный тип, и выставляешься пропетом которые убирают все du

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