@Fsharp_chat

Страница 604 из 772
Mariia
16.06.2018
20:03:18
Sergey
16.06.2018
20:07:12
Как yaml провайдеру объяснить, что поле может быть option?
именно Option он вроде как не провайдает, но там есть параметр InferTypesFromStrings … если наверно его сделать false и в провайднутом типе все проперти будут reference типами… то провадер или будет возвращал null или можно сделать несложно чтобы он возвращал null

Ayrat
16.06.2018
20:10:23
Я могу встрять. Каждый раз пытаюсь райдер завести, и он всё больше похож на VS в плохом смысле - навязывание воркфлоу. Т.е. dotnet restore -> dotnet build -> dotnet publish. Шаг вправо влево - расстрел. Понятно что JB сосредоточены на C# где это норма, там 90% людей делают ASP.NET CRUD'ы и не парятся. Но вот привязать FAKE или paket в райдер без гемороя невозможно. Не говоря уж о проекте с кастомным билдфлоу и паблишингом отличным от /bin/debug/netcoreapp2.0/app.dll

Google
Sergey
16.06.2018
20:10:50
Печаль, спасибо
сходу даже не понятно как это должно работать… если все по умолчанию сделать Optional с ним сразу станет не приятно работать весьма…

Nikolay
16.06.2018
20:12:02
Хотя не понятно тогда как делать с int, и другими

Sergey
16.06.2018
20:13:08
Отдельным флагом, и например, если пишешь "x: null", тогда парсит как option
как Option<T> где Т что? всегда string? если же нету значения тои тип не вывести

Ayrat
16.06.2018
20:13:17
проекта на сишарпе и коре пишу в райдере, но паблиш, работа с еф и прочее - консолька же
ну так и толку тогда от rider?) для F# VS Code пока что вне конкуренции. F# слишком уж ушёл от майкрософт стандартов (свой компилятор, свой билд менеджер и нугет менеджер и т.д.)

Nikolay
16.06.2018
20:13:27
Прокатит разве что с массивами

Nikolay
16.06.2018
20:14:51
Типа такого: props: - key: 1 value: 5 - key: 2 value: null

Ayrat
16.06.2018
20:15:45
Они пару месяцев назад объявили о поддержке Paket. Знаешь как это работает? Они просто отключают auto nuget restore если видят папку .paket и говорят тебя варнингом: "мы задетектили пакет, дальше сам ебись через консоль". Поддержка, my ass

т.е. в VS Code у тебя там в команд палетте есть все пакет команды и оно изи пизи, а в райдере тебе или кастомные екшны руками рисовать, или реально консоль.

Google
Ayrat
16.06.2018
20:16:59
И это они называют - ПОДДЕРЖКА PAKET

Sergey
16.06.2018
20:18:09
Типа такого: props: - key: 1 value: 5 - key: 2 value: null
тогда уж yaml props - key: 1 vakey: 5 - key: 2 я тут как раз билд FSharp.Configuration чинил потом код перед глазами =) - с массивами да, наверно можно, но инференс будет посложнее - но еще yaml TP же позволяем редактировать файлик обратно, вот сохранение изменений обратно, тоже будет с танцами

Artem
16.06.2018
20:18:26
ну так и толку тогда от rider?) для F# VS Code пока что вне конкуренции. F# слишком уж ушёл от майкрософт стандартов (свой компилятор, свой билд менеджер и нугет менеджер и т.д.)
>толку тогда от rider код там писать удобнее чем в вскоде - приятнее подсветка синтаксиса, декомпилятор по ф12 и прочие приятности) вскод для шарпа пробовал 3 дня работать - неплохо, но многих мелочей не хватает

Ayrat
16.06.2018
20:20:22
>толку тогда от rider код там писать удобнее чем в вскоде - приятнее подсветка синтаксиса, декомпилятор по ф12 и прочие приятности) вскод для шарпа пробовал 3 дня работать - неплохо, но многих мелочей не хватает
Подсветка в VS Code кастомная же. Там токенайзер на регекспах, а далее ты эти токены можешь как хочешь разукрашивать. Ionide поставляет весьма унылый набор регекспов, последний апдейт добавил токены для типов аргументов в объявлении функции (раньше не было) Но даже существующие токены они не раскрашивают все почему-то

Nikolay
16.06.2018
20:22:14
Хмм, или мб лучше как-то руками правило задавать для Option? Грубо говоря так: type Config = YamlProvider<"config.yaml", options = [| "props.value" |]> Мб синтаксис кривой, но суть думаю ясна

Ayrat
16.06.2018
20:22:50
там кастомную раскраску с полпинка добавить

там например до сих пор лагает подсветка на объявлениях вида Array.ofSeq потому что они of ловят как ключевое слово и оно синее ну там приколов масса

Rider тоже тупой. Он не понимает кастомные операторы вида >>- или <&> После них парсер Райдера ломается навсегда и весь остальной файл у меня серый

VS Code регекспы хотя бы по строкам ловит. поэтому если баг в одной строчке, следующая будет нормально отображаться. райдер ломает сразу всё после первой ошибки

Sergey
16.06.2018
20:26:07
А кастомное правило не очень будет, да? Тип: x: Option(1) или так: x: Some(1) x: None Но это получается только для того, чтобы TP объяснить, что ты получить хочешь
это уже какая-то схема получается, тогда уж наверно ложить рядом файлик со схемой и не пытатся ее угадать - типо вот так http://doctrine1.readthedocs.io/en/latest/en/manual/yaml-schema-files.html

Ayrat
16.06.2018
20:26:58
А ещё бонус. регекспы для раскраски кода F# вы можете посмотреть и поправить пул реквестом. Исходники райдера вы вряд ли увидите, лучшее что вы сможете сделать это написать унылый тикет в их youtrack и потерять надежду на его выполнение

Ayrat
16.06.2018
20:30:02


Узнаю джаву (хоть это и котлин)

упоролись они там по по вложенности папок

если что в этой папке лежит один файл. Как и во многих других

Artem
16.06.2018
21:11:31
как в вскоде выполнить только выделенный кусок кода? оно так умеет?

Google
Artem
16.06.2018
21:21:23
UPD: нашёл как. осталось перебиндить хоткей

Mariia
16.06.2018
21:24:14
@fvnever ples bot

Artem
17.06.2018
02:14:20
Неплох, но не идеален

Evgeniy
17.06.2018
05:08:37
Andrew
17.06.2018
05:35:50
Мне очень нравится Rider.
Наконец не я один в сообществе считаю что он годный В 90% дотнет сообществ все топят за студию

Evgeniy
17.06.2018
05:48:31
Да, @auduchinok делает большую работу в F# плагине.

Ayrat
17.06.2018
06:11:00
А где и кто объявлял? Поддержкой Paket пока не занимались, а воркараунд с отключением нюгета позволял хотя бы открывать такие проекты.
Согласен, в патчноте говорится не о поддержке, а именно о дословном поведении. Мои извинения.

Можно, пожалуйста, пример файла? Буду рад починить.
Поставил напоминалку чтобы завтра с утра выслать в этот чат пример.

Eugene
17.06.2018
06:12:32
Evgeniy
17.06.2018
07:20:54
Hi ?

Roman
17.06.2018
08:34:13
что брать для вскода? это или ионид?
Я бы и то и то попробовал

Mariia
17.06.2018
13:00:20
а можно глупый вопрос, когда стоит юзать беквард пайпы?

и не делает ли их использование флоу программы более запутанным

Evgeniy
17.06.2018
13:02:33
Ayrat
17.06.2018
13:19:21
Google
Ayrat
17.06.2018
13:19:22
в сложных сценариях без <| никуда. ща пример кину



в Job.tryIn надо подать три лямбды. если они неоднострочники, то без <| будет куча скобок

я иногда заменяю <| на ^

Evgeniy
17.06.2018
13:24:30
Выглядит жутко.

Ayrat
17.06.2018
13:27:30
ну, это и не хеловорлд так-то

Evgeniy
17.06.2018
13:31:07
ну, это и не хеловорлд так-то
Без разницы. У Hopac отвратительный API на кастомных операторах.

Friedrich
17.06.2018
13:31:24
а можно глупый вопрос, когда стоит юзать беквард пайпы?
Я выдумал себе «более сложные правила», как говорит тов. @gsomix. Некоторые функции, которые часто стоят на первом месте в выражениях, я мысленно объявил «операторами». Например, Async.AwaitTask, ignore и тому подобные. С этими «операторами» я в своём коде разрешаю использовать <|. Например, так: let! result = Async.AwaitTask <| reader.ReadToEndAsync() ignore <| Directory.CreateDirectory path

Мне кажется, это как раз более читаемо, если сильно не баловаться.

Evgeniy
17.06.2018
13:31:54
Без разницы. У Hopac отвратительный API на кастомных операторах.
Но и от лямбд можно было бы отказаться в пользу функций с нормальными именами. Каждый раз вспоминать при чтении, что и в каком порядке подается в tryIn — это такое.

Ayrat
17.06.2018
13:33:48
если честно половину не поняла
Ну смысл кода неважен. Главное <|

Friedrich
17.06.2018
13:34:16
спасибо, с эвеитом прям оч круто выглядит
Ну, обычно такой авейт вообще не нужен. Конкретно этот авейт сшивает наш Async и сишарповый Task. Если у тебя везде асинки или везде таски, и ты используешь соответствующий билдер, то с этими функциями извращаться не нужно, и всё делает простой let!

Friedrich
17.06.2018
13:35:49
FusionTasks!
Наверное, это очень глупо прозвучит, но я забыл, что такое FusionTasks :(

Evgeniy
17.06.2018
13:35:56
https://github.com/kekyo/FSharp.Control.FusionTasks

Ayrat
17.06.2018
13:36:35
https://github.com/rspeele/TaskBuilder.fs

Пакет может прям файл подтянуть

Google
Friedrich
17.06.2018
13:36:52
https://github.com/rspeele/TaskBuilder.fs
Не, про эту либу я помню, я даже её мейнтейню в нугете :)

Evgeniy
17.06.2018
13:37:18
TaskBuilder и FusionTasks про разное.

Mariia
17.06.2018
13:39:51
https://github.com/rspeele/TaskBuilder.fs
F#'s Async behaves a little differently from Task, which can be confusing if you're used to the latter.

hm

Ayrat
17.06.2018
13:41:14
Ну, это не секрет.

Andrew
17.06.2018
13:51:00
Кстати говоря, а как определяется приоритет для кастомных операторов?

Evgeniy
17.06.2018
14:03:03
Ну, в смысле, по правилам, описанным в спеке.

Зависит от символов с твоем операторе.

Andrew
17.06.2018
14:03:43
Ох щи, так и думал

Но это же дичь

Evgeniy
17.06.2018
14:03:55
Да.

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