@Fsharp_chat

Страница 656 из 772
Vasily
03.08.2018
07:02:20
Но ещё нам надо задавать их порядок

Google
Evgeniy
03.08.2018
07:13:58
Попробуйте не прописать .fs в проекте, ничего не соберется.

Vasily
03.08.2018
07:26:15
В общем, факт в том, что баг есть

И чинить его надо

Pavel
03.08.2018
07:26:58
Два экрана?
Ну да, в терминах веба это обычно называется страница. Привязка к урлу для навигации, синхронизация данных между экранами.

Evgeniy
03.08.2018
07:27:19
Ок, это интересно!

Vagif
03.08.2018
07:47:56
Обсуждаем с коллегами использование F# Lint в build-процессе. Мне нравится, как линт работает в VS Code/Ionide, а можно ли его настроить в Райдере?

Я немного скептически отношусь к тому, чтобы линт встраивать в build и интерпретировать его замечания как ошибку. Имхо, линт должен советовать, а не требовать.

Идеально было бы в Райдере видеть рекомендации линта. Кто-нибудь знает, возможно ли это? @auduchinok

Eugene
03.08.2018
07:50:24
А какие именно анализы оттуда хотелось бы видеть?

Отвечая на вопрос — возможно. Но я бы предпочёл завести решарперные анализы вместо многих из линта.

Vagif
03.08.2018
07:52:27
Ну примерно те же, что и lint выдает, когда я работаю с VSCode:

x::[] might be able to be refactored into [x]. fun _ -> () might be able to be refactored into ignore.

Google
Vagif
03.08.2018
07:53:11
Это возможно сегодня или требует обновления в райдере?

А чем тебе F# lint, которым Ionide пользуется, не нравится?

Eugene
03.08.2018
07:57:10
Часть анализов дублирует то, что есть в решарпере, и что в планах завести. Интегрировать некоторые решарперные фиксы будет гораздо предпочтительнее.

Не то чтобы он прям не нравится.)

Vagif
03.08.2018
07:59:18
А это в краткосрочных планах? ?

Eugene
03.08.2018
08:01:07
Можно попробовать в 2018.3 на него посмотреть. Сейчас — фиксы важных багов в 2018.2 и продолжение рефакторингов в кэшах для ренейма.

Vagif
03.08.2018
08:05:39
Sounds good.

Ayrat
03.08.2018
08:10:13
Я бы в билд процесс автоформатинг включил, т.к. линтер в Иониде иногда делает дичЪ sequence |> Seq.map (fun x -> страшный мапинг на пару строк) |> Seq.map (fun x -> какой-то другой мапинг на ещё пару тройку строк) он всё подчеркивает и говорит что дескать надо кровь из носу закомпозировать и предлагает так (и это ужасно) Seq.map ((fun x -> .... ) >> (fun x -> .... )) sequence

Vagif
03.08.2018
08:19:38
Да, меня это его стремление поменять все на композицию страшит

Evgeniy
03.08.2018
10:44:57
Привет.

Ayrat
03.08.2018
11:43:54
вопрос, кто помнит какой метод в CE билдере надо реализовать чтобы он мог делать так state { something andSomethingElse } при этом something и somethingElse вызывают методы билдера и меняют его с каждой строчкой

Vasily
03.08.2018
11:44:31
Delay

Скорее всего

Надо в спеке глянуть

Google
Vasily
03.08.2018
11:44:59
Или Combine

Ayrat
03.08.2018
11:45:02
ну вот я в спеку гляжу и вижу фигу

https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/computation-expressions#creating-a-new-type-of-computation-expression

точнее не в спеку

а в доку

Vasily
03.08.2018
11:45:23
Не в ту спеку спотришь

Ща

Ayrat
03.08.2018
11:45:35
да читал я ту спеку

она местами устарела

в спеке например написано что кейсы DU можно так создавать union-type-case-data := ident --null union case ident of union-type-field * ... * union-type-field --n-ary union case ident : uncurried-sig --n-ary union case uncurried-sig := args-spec -> type args-spec := arg-spec * ... * arg-spec

но это неправда

вот эта строчка не пашет: ident : uncurried-sig --n-ary union case

Vasily
03.08.2018
11:48:29
Короче,тебе на страницу 76

Там на примере асинка

Ayrat
03.08.2018
11:49:30
ты ж на эту смотришь? https://fsharp.org/specs/language-spec/4.1/FSharpSpec-4.1-latest.pdf

чтоб у нас страницы были одинаковые)

хм, и правда чтоль делей

подозрительно

Evgeniy
03.08.2018
12:10:30
Google
Vasily
03.08.2018
12:16:46
Короче

Там где-то в начале есть сигнатура полного вызова

Ayrat
03.08.2018
12:17:26
не, я выяснил. Надо сделать нелогичное и реализовать Yield

Vasily
03.08.2018
12:17:40
Странно

Ayrat
03.08.2018
12:17:46
Да

Vasily
03.08.2018
12:17:48
Комбайн вроде

Или я тебя не так понял

Ayrat
03.08.2018
12:19:52
Да я может сам себя не понял. Я хочу в CE задавать некие настройки декларативно, а потом их исполнить. Настройки меняют стейт CE при вызове, флаги там переключают, добавляют всякое. Т.е. под конец CE будет раздутая и готовая к выполнению

Vasily
03.08.2018
12:30:53
Ну сделай дефолтный yield

И кучу кастомных команд

На применение настроек

В общем, по факту у тебя получится фолд

https://github.com/vshapenko/HttpBuilder/blob/master/HttpWrapper/Program.fs

Вот говнопример

Ayrat
03.08.2018
12:33:15
о, вроде похоже

Vasily
03.08.2018
12:33:32
Но это работает только на кастомные операции

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

Вторым собственно что делаешь

Я, помню, пытался с помощью билдера конструировать функцию создания объекта

Ayrat
03.08.2018
12:34:32
хм. Ну да, чот типа

Google
Vasily
03.08.2018
12:35:33
В общем, там надо понимать

Что в целом можно даже bind не реализовывать

Ayrat
03.08.2018
12:36:40
Да, я так и думал, мне ж let не нужен

Vasily
03.08.2018
12:38:29
Главное, не забыть Yield(())

Ayrat
03.08.2018
12:38:55
меня как-то бомбило с вида функций, которые должны принимать unit )))

(())

Vasily
03.08.2018
12:44:10
Сказал бы я, но чат не тот

Roman
03.08.2018
12:54:20
Или () |> myFunc

Ayrat
03.08.2018
12:56:02
хм, не могу найти в телеге, ща

https://t.me/fsharp_chat/61348

нашёл))

Roman
03.08.2018
13:00:41
нашёл))
Я так и не понял нафига.

Какая сигнатура у конструктора?

Ayrat
03.08.2018
13:00:56
Короче, чтобы заново не разливаться мыслею по древу Class() - вызов пустого конструктора Class(()) - вызов непустого конструктора, который принимает unit

Class(()) :: Class

ну точнее нет

конструктор такой new:: unit -> Class вызов в F# выглядит как Class(())

обоже, member __.Yield() = ... и member __.Yield(()) =... не одно и то же, лол!

я думал это только для классов работает

причём сигнатура одинаковая, а CE хочет второй вариант - Yield(())

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