@Fsharp_chat

Страница 252 из 772
Nikolay
04.08.2017
11:09:07
Эту фцию можно собирать с помощью квотирования

Roman
04.08.2017
11:09:48
Его можно и обойти.
Обойти и построить фцию через рефлекшн. Не?

Я имею ввиду. Есть квотированое выражение, обходим его и строим фцию. Но это компайл тайм только

Igor
04.08.2017
11:12:15
там есть _distraction_ mode?
Конечно, он же на базе IDEA сделан (честно говоря не могу уже без него кодить в IDEA, хреново что он в rider сломан)

Google
Andrew
04.08.2017
11:13:39
Конечно, он же на базе IDEA сделан (честно говоря не могу уже без него кодить в IDEA, хреново что он в rider сломан)
Я слышал про distraction-free mode в некоторых редакторах, но вот distraction mode это сильно :)

Evgeniy
04.08.2017
11:13:57
Я имею ввиду. Есть квотированое выражение, обходим его и строим фцию. Но это компайл тайм только
Рантайм. :) А мы уже и так строим функции в рантайме. Берем то, что выдает компилятор после обработки форматной строки, и строим функцию для обработки аргументов.

Igor
04.08.2017
11:14:15
Andrew
04.08.2017
11:15:16
OK, ты по делу можешь что-нибудь сказать?
Могу поставить ради эксперимента, если никто быстрее не откликнется

Nikolay
04.08.2017
11:15:39
Короче, printf like функцию с кастомными типами сделать не получится?

Evgeniy
04.08.2017
11:16:03
Короче, printf like функцию с кастомными типами сделать не получится?
Надо подумать крепко. Я напишу, если появятся идеи.

Nikolay
04.08.2017
11:16:25
Evgeniy
04.08.2017
11:16:39
Конечно. С тайппровайдерами-то нет никаких проблем. :)

Судьба несправедлива к F#, только-только разобрались, что делать с провайдерами, как их у нас отобрали.

Я думаю, по этой же причине никто не торопится их улучшать.

Nikolay
04.08.2017
11:23:32
А когда они появились?

Evgeniy
04.08.2017
11:23:36
В 2012.

Google
Nikolay
04.08.2017
11:23:57
Время разобраться было :)

Evgeniy
04.08.2017
11:24:05
Но полезные TP нормального качества стали появляться не так и давно.

Nikolay
04.08.2017
11:29:58
let test (str: string) ([<ParamArray>] arr : 'a list) =

Может как-то так сделать валидацию

А нет, не прокатит

Igor
04.08.2017
11:57:28
А можно как-то сделать что бы допустим 4 мейлбокса обрабатывали команды из одного источника? Мне пока в голову приходит, только рандомом раскидывать им задачи.

Igor
04.08.2017
13:06:29
ОК, а где можно почитать про suave? Что бы для тех кто первый раз видит, но много инфы _сжато_ Доку читаю, но там как-то разрозненно. Курсов не нашел, остается youtube, но там надо копаться, что бы найти внятный туториал.

Igor
04.08.2017
13:46:42
А живые юзер есть, которые могут ответить на конкретный вопрос?

Evgeniy
04.08.2017
13:47:36
У меня никак руки не доберуться вкатиться в веб-технологии со стороны F#.

Ну, и это, @neftedollar, наверное.

Igor
04.08.2017
13:59:21
Гиттер, наверное. :)
Логично (с fabel помогло). В принципе с гуглением все разрешилось (у меня там микросервис на 40 loc) Разрабатываю в Rider (потому что mono) - даже приятно и подсказки работают кажись быстрее чем в vscode и форматирование есть (но странное).

Igor
04.08.2017
14:09:21
Под .Net Core?
Нет - suave + mono обычный. Про fable в смысле что гиттер помогли с прошлой задачей (vscode плагин на fable).

Google
Vlad
04.08.2017
14:09:54
@angmarr а фантомас уже можно как экстеншн в вс код качать?

Igor
04.08.2017
14:13:27
Сейчас пишу “микросервис” который будет фантомаса запускать в докере на vps и там форматировать (все open source на github). Это чисто воркэранд, что бы пощупать все вместе (над UI плагина подумать), пока не придумаем как бандлить его в сам экстеншен.

Evgeniy
04.08.2017
16:07:50
Привет!

Anton
04.08.2017
16:07:58
Привет

я то хаскеллист, зашёл подсматривать годные идеи

Oleg
04.08.2017
16:09:57
насколько же крут #rider, такой реактивности со времен ДОСа не помню, отладчик на голову выше студийного

Roman
04.08.2017
16:11:33
эт сарказм или серьезное заявление? А то я немного выпал из контекста

Oleg
04.08.2017
17:03:20
серьезное. Я принципиально не смотрел ЕАПы кроме самого первого публичного превью. Приятно удивило примерно все

Igor
04.08.2017
20:25:12
@Dolfik ты посмотрел сорцы fantomas? У меня есть вопрос по его архитектуре.

Nikolay
04.08.2017
20:27:27
FAKE и Paket меня отпугивают, пока

Igor
04.08.2017
20:30:41
Если копнешь в сорцы, посмотри обязательно зачем в функцию CodeFormatter.FormatDocument(path, text, FormatConfig.FormatConfig.Default) нужно передавать ссылку на какой-то файл (path), если форматирует код он из параметра text

Igor
04.08.2017
21:20:42
ОК, а компилятору зачем это нужно? (и можно ли это обойти, допустим memorystream заюзать или byte array?)

Vasily
04.08.2017
21:22:36
https://fsharp.github.io/FSharp.Compiler.Service/reference/microsoft-fsharp-compiler-sourcecodeservices-fsharpchecker.html

Roman
05.08.2017
10:39:46
Как круто, что у нас тут так уютно. И все помогают. Большое вам спасибо, господа и дамы.

Igor
05.08.2017
18:26:16
Как относитесь к операторам типа >=> >== ? Может используете? Сделал парочку для Fable: >== :: Promise<‘a option> -> (‘a -> ’b) -> Promise<‘b option> >=> :: Promise<‘a option> -> (‘a -> Promise<‘b option>) -> Promise<‘b option> и слегка переписал код ни них. Впечатления остались противоречивые. С другой стороны Марк и Scott рекомендую “railway programming”

Google
Vlad
05.08.2017
18:33:18
https://pbs.twimg.com/media/BvAi347CcAAf2Z8.png:large

А так, честно, не знаю. Наверно от бэкграунда человека зависит

Igor
05.08.2017
18:38:47
У меня получилось вот такое (на скорую руку для эксперимента, потом удалю). https://i.gyazo.com/0de97cf9ee79a29d1541a546ab797037.png

Это кусок плагина от fantomas: # Пытаемся взять текст текущей страницы (api возвращает None если нет открытых окон) # => отправляем на сервер, который форматирует и возращает отформатированный код # => пытаемся обновить текст на текущей странице (надо конечно добавить проверку что это та же самая страница) ну и все это оборачивается в показ прогресс-бара

Дед Пегас
05.08.2017
18:49:07
Igor
05.08.2017
19:14:07
а это операторы из фп?
Обычные bind из монад и fmap из фанктора

Aminion
05.08.2017
19:48:46
тут проскаивал топ лист видосов по фшарпу, он где то закреплен? А то не могу найти.

Igor
05.08.2017
20:15:02
(перепинел, для закрывших)

Ivan
05.08.2017
20:33:11
>=> - это рыбка Клейсли. У нее стандартная сигнатура: ('a -> M<'b>) -> ('b -> M<'c>) -> (M<'a> -> M<'c>) - то есть комбинатор двух бинд функций в одну.

Прошу прощения - в конце - 'a -> M<'c>

А бинд - это »=

Вот из за путаницы опреаторы и не любят

Igor
05.08.2017
20:39:02
Не суть. А вот я реально не опечатался в сигнатурах.

Ivan
05.08.2017
20:40:59
Я о том, что можно определять любые операторы. Но читать это потом будет нереально. К сожалению монадные комбинаторы стандартизированы крайне плохо. Опираться можно только на хаскель принятые - они хотя бы устойчивы.

А суть клейсли например в твоем случае, это возможность сказать: postAndReplaceText = postTest "asdasda" >=> replaceTest

Igor
05.08.2017
20:44:03
Да я тоже из не люблю, но взялся за Suave, а там все описание на них.

Ivan
05.08.2017
20:45:02
В Suave вроде бы очень четко операторы прописаны. Как раз очень по хаскелевски

Google
Igor
05.08.2017
20:46:01
Разбираешся в Suave? У меня есть вопросы

Ivan
05.08.2017
20:46:36
Мне кажется часто путают саму монаду и монадный бинд как функцию первого порядка - отсюда вся беда

Спрашивай - смогу отвечу. Опыт правда не так чтоб большой

Ivan
05.08.2017
21:04:42
В Suave например, основная работа идет на уровне функций, которфые второй аргумент бинда. Их комбинируют для получения единой бинд функции а потом применяют. Так очень часто. В FParsec то же самое. До самой монады как бы уже и дела нет - она появится на этапе исполнения в самом конце.

Igor
05.08.2017
21:09:42
А в чём тут проблема?

Ivan
05.08.2017
21:09:42
Поэтому говорят о монадных комбинаторах - опреаторах, которые комбинируют (?) две (обычно) функции вида 'a -> M<'b>.

В том, что операторы путают. Они нестандартные как бы. А потом чтобы прочитать надо смотреть код опрделения опратора. И так каждый раз.

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

Я опять с сигнатурами напутал. Должно быть: M<'a> -> M<'b>

Ed
06.08.2017
07:36:27
в ажур функциях захардкожен вот такой биндинг редирект: <dependentAssembly> <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.4.0.0" newVersion="4.4.0.0" /> </dependentAssembly>

могу ли я как-то f# 4.1 компилятором скомпилить dotnet SDK fsproj что бы максимальная загружаемая FSharp.Core не привышала 4.4.0.0?

Igor
06.08.2017
10:55:16
Спрашивай - смогу отвечу. Опыт правда не так чтоб большой
Есть функция work :: string -> Async<string option> Можешь написать простейший POST роутинг для нее на путь “/format” (path)?

Первый релиз VSCode расширения для форматирования кода (для внутреннего тестирования). # Команда называет Fantomas: Format F# # Работает через интернет (пока не придумаем как запускать fantomas на локально) # Форматирует либо весь документ, либо выбранный кусок # Можно прибиндить на клавишу https://github.com/y2k/FantomasVSCode/releases/tag/0.1.0

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