Vladislav
https://github.com/dotnet/fsharp/issues/9200
Vladislav
кряк
Hog
Интелисенс для слабых духом
Ayrat
Ayrat
Придется им ещё один Thread.Sleep из кода убрать!!1
Vladislav
Лул
https://github.com/dotnet/fsharp/issues/9201
Ayrat
Vladislav
Хз
Vladimir
да - EF Core
имей ввиду вот этот ишуй https://github.com/dotnet/fsharp/issues/3782
Vladislav
Я не сидел там давно уже
Ilya
Хм, а в райдере подсказки паттерн матчинга сломались, или я слишком много хочу?
Ayrat
Vladislav
https://github.com/dotnet/fsharp/pull/9193
Vladislav
теперь хорошее
Ilya
Мне казалось, что работали, но это не точно.
Ilya
Да, в VS тоже не работают. Значит, я с сишарпом путаю. Дожили. Там подсказки при паттерн матчинге лучше.
Vladimir
Hog
Я прочитал всё до конца :)
Hog
А онанизмирующие рекорды - можно?
Hog
Заместо туплей-то?
Vladimir
в те годы они еще не анонимировали)
Hog
Я попробую ща
Anonymous
пачиму нельзя новые анонимные DU делать на лету на основе уже существующих. сумма сумм. type AorB = | A | B, type CorD = | C | D и ВНЕЗАПНО let f (x: AorB | CorD) = match по A | B | C | D. или можно но я не знаю как?
Ayrat
Ayrat
Ayrat
То есть два одинаковых по виду объединения могут быть разными
Vladislav
Anonymous
Ayrat
Ayrat
То есть int | int != Int | int
Ayrat
Если мы говорим про ДУ
Ayrat
Это только юнион типы так работают
Ayrat
(которых у нас нет)
Ayrat
Anonymous
тогда int | int != int | int нарушает рефлексивно, т.к. \forall x: x = x. я тебя наверно нипанимаю. но суть в том, что я хочу как в TS: просто на ходу лепить AorB | CorD и объявлять все это явно.
Ayrat
Короче, вот смотри
type UserIdOrError =
| UserId of int
| Error of code
type Response =
| Value of int
| HttpStatusCode of int
Ayrat
Тут 2 Ду, 4 инта
Anonymous
угу
Anonymous
вижу
Anonymous
и?
Ayrat
В юнион типах
(int|int) | (int|int) === int
Ayrat
В размеченных объединениях
(int|int) | (int|int) === int|int|int|int
Ayrat
Так, поправил
Anonymous
да. но тут же другое множество будет по определению. условно { (1, UserId of int), (2, Error of code), (3, Value of int), (4, HttpStatusCode of int) }.
Anonymous
это не эквивалентно int | int | int | int
Ayrat
Ayrat
Ayrat
У нас даже синтаксиса такого нет
Anonymous
Да, я теги скипнул, писать долго
так епта!11 что в моем, что в твоем примере все работает. что за консерн тогда?? (x + y) + (b + c) = x + y + b + c. ВСЕ СОШЛОСЬ, ЭВРИКА!!!1
Ayrat
Только
| TagName of type
Ayrat
Vasily
Кому полезная?
Vladislav
тут дактайпинг хотят или что
Anonymous
Кому полезная?
ну меньше именованных обобщений будут там, где они нужны для 1-2 функций и все.
Vladimir
Anonymous
меньше букаф при той же самантике
Vasily
Ох бля
Anonymous
без потери в читаемости
Vasily
Откуда вы берётесь
Vasily
Такие
Ilya
Семантика не та же ведь.
Anonymous
/me не понимает
Ayrat
Ayrat
Я ж тебе выше показал почему
Anonymous
type AorBorCorD = | A | B | C | D
Ayrat
В юнион типах
(int|int) | (int|int) === int
Ayrat
В размеченных объединениях
(int|int) | (int|int) === int|int|int|int
Anonymous
в чем не то же самое-то? эквивалентно ведь.
Ayrat
Допустим в двух ДУ один и тот же кейс есть
Anonymous
by definition
Anonymous
A = A | B; A + A = { (1, A), (2, A), (3, B), (4, B) }