Size: a a a

2021 March 11

I

IdiocyAcceptance in F# Chat
источник

I

IdiocyAcceptance in F# Chat
Да уж
источник

AT

Anton Ternavsky in F# Chat
оно точилось под DU, потому видимо и так :)
источник

IC

Ilya L Che in F# Chat
Угу, интуитивно хочется отнести when только ко второй половинке, потому что кажется, будто | в строках
| A a
и
| B a
равноправны, а они нет.
источник

AT

Anton Ternavsky in F# Chat
ИМХО by design как итог.
источник

AT

Anton Ternavsky in F# Chat
Ilya L Che
Угу, интуитивно хочется отнести when только ко второй половинке, потому что кажется, будто | в строках
| A a
и
| B a
равноправны, а они нет.
Тогда с DU будет неудобно паттерн матчингом с отсевом по типу пользоваться, если when цеплять к конкретному паттерну
источник

DB

Daniil Barbashov in F# Chat
Anton Ternavsky
Тогда с DU будет неудобно паттерн матчингом с отсевом по типу пользоваться, если when цеплять к конкретному паттерну
Надо просто правда скобочки запилить, чтобы когда надо - обьединять when, когда надо по-отдельности.
Но тогда это слишком сложно становится
источник

IC

Ilya L Che in F# Chat
У паттерн матчинга и так синтаксис сложный, а со скобочками совсем плохо будет. Лучше уж в коде продублировать when и -> ... для обоих кейсов.
источник

AT

Anton Ternavsky in F# Chat
Daniil Barbashov
Надо просто правда скобочки запилить, чтобы когда надо - обьединять when, когда надо по-отдельности.
Но тогда это слишком сложно становится
Ну я бы сделал-чтобы каждый паттерн можно с when объединять, выше уже было
источник

AT

Anton Ternavsky in F# Chat
Ilya L Che
Запись ниже в фшарпе невалидна, если что.
match foo
| bar1 when ... | bar2 when ... -> ...
Нельзя внутрь паттерна OR запихнуть ещё и гард when.
Во, вот так было бы хорошо
источник

I

IdiocyAcceptance in F# Chat
Anton Ternavsky
Во, вот так было бы хорошо
Так разные переменные биндятся
источник

I

IdiocyAcceptance in F# Chat
match value with | _ when someArray.contains value | _ when someArray2.contains value -> "ok" ...
источник

I

IdiocyAcceptance in F# Chat
Я думаю ты больше про такое?
источник

AT

Anton Ternavsky in F# Chat
И такое тоже.
источник

g

gsomix in F# Chat
источник

VS

Vladimir Shchur in F# Chat
так а что делает вертикальная черта в данном случае? я в доке не нашел)
источник

g

gsomix in F# Chat
Vladimir Shchur
так а что делает вертикальная черта в данном случае? я в доке не нашел)
Вертикальная черта — это disjunctive pattern. :)
источник

IC

Ilya L Che in F# Chat
Vladimir Shchur
так а что делает вертикальная черта в данном случае? я в доке не нашел)
источник

VS

Vladimir Shchur in F# Chat
аа, все понял
источник

g

gsomix in F# Chat
На самом деле чуть сложнее.

rule :=
   pat pattern-guard_{opt} -> expr -- pattern, optional guard and action

pattern-guard := when expr
pat := ...
   pat '|' pat -- disjunctive pattern

rules := '|'_{opt} rule '|' ... '|' rule
источник