Nuxs🏴☠️
Ayrat
Ayrat
Create a new Gist
https://gist.github.com/
Nuxs🏴☠️
Гист есть
целых два, но я ссылки на них потерял
Ayrat
Вот сюда залей хотя бы
Nuxs🏴☠️
я на пастбин заливаю
Nuxs🏴☠️
вот он, тот самый
Nuxs🏴☠️
https://pastebin.com/STgFfvkL
Ayrat
https://pastebin.com/STgFfvkL
type Operator =
| Oper of (Expr -> Expr)
| Oper2 of (Expr -> Expr -> Expr)
and Expr =
| Exprs of Expr * Operator * Expr
| Expr of Operator * Expr
| Num of int
type Operator with =
member this.Invoke expr1 expr2 =
match this with
| Oper(x) -> x expr1
| Oper2(x) -> x expr1 (Option.get expr2)
let rec int expr =
match expr with
| Num(x) -> x
| Expr(op, x) -> int <| op.Invoke x None
| Exprs(x, op, y) -> int <| op.Invoke x (Some(y))
Ayrat
в пределах модуля можно вытворять вот такие штуки
Vladislav
Nuxs🏴☠️
Ayrat
Ayrat
это называется Type Extension, если сделано в пределах одного модуля, то оно будет частью одного типа
Anonymous
Anonymous
Каков юзкейз?
Ayrat
А зочем?
ну типа по частям объявлять взаимнорекурсивные типы без рекурсии
Ayrat
типа вот 1ая часть типа А, вот 1ая часть типа Б, которая зависит от 1ой части А, вот вторая часть типа А, которая зависит от 2ой части типа Б и пр
Ayrat
код получается нерекурсивный, а просто обычный, но типы собираются по кускам, а не разом
TOV_MULTIMASSO
TOV_MULTIMASSO
Ограничение на взаимную рекурсию функций и типов в 2020 выглядит довольно дико. Да, блин, даже golang позволяет
TOV_MULTIMASSO
Выполнием же объявлений по шагам, как в ocamltop, никто заниматься, я думаю, не будет. Разрабы могли бы и позволить всем типам и функциям ссылаться на кого угодно.
Ayrat
Ayrat
Так, ещё раз. Взаиморекурсия включается одним словом
rec namespace
Ayrat
Можно говнокодить как привычно. Почти
Anonymous
Anonymous
Я хз, первый раз живу.
Vasily
Скажу так- когда такое начинает оказывать серьезное воздействие, это значит, что или код написан супероптимально, или делается много лишней работы
Ilya
И это человек, который array pool использует!
Anonymous
Vasily
Vasily
Там не только эррей пулы юзать начнёшь, но и рефы
Vasiliy
https://www.igromania.ru/news/91236/Demoversiyu_polskogo_kiberpanka_Ghostrunner_pokazali_na_PAX_East_2020.html
Vasiliy
О, игра таки живет
Shub
Tammy Natasha как капчу проходите?у
Vladislav
https://twitter.com/ashmind/status/1233908955874611201?s=12
Ayrat
В порнонет закинь
Vladislav
Vagif
Shub
Shub
тут скорее в пределах одной сборки
Ayrat
тут скорее в пределах одной сборки
Пруфы я предоставлю завтра. Или голову с пеплом. Но скорее пруфы.
Я пока уточню, фарш емнип в таких случаях оперирует файлами. Когда я говорил "в пределах одного модуля", я имел в виду файл.
Все экстеншны за пределами файла будут скомпилены как экстеншны, а не как часть типа.
Я пойду посплю с этой мыслью и завтра накидаю пруф
Shub
Ayrat
Ayrat
Но это не будет частью типа
Shub
Shub
Но это не будет частью типа
почему вдруг? если расширения втащены в текущую область видимости - то система типов вполне считает это частью типа
Ayrat
Ayrat
Shub
Ayrat
ЭТО ДРУГОЕ
Ну почему же.
type Option with
interface IMonoid ...
Ayrat
Следуя твоей логике, это должно стать частью типа (нет)
Shub
а это не экстешен, вроде бы
Ayrat
Ayrat
Семантика та же самая
Shub
ноуп.
Ayrat
Shub
спецификация говорит, что расширение - это всего три вещи
Shub
Intrinsic type extensions
Optional type extensions
Extension methods
Shub
интерфейс не катит
Ayrat
Вроде. Я ща чот засомневался
Shub
ну вроде можно, но это не тайп экстеншн
Shub
Type extensions also have the following attributes:
Any type that can be accessed can be extended.
Shub
у тебя там тема типа
type T = ....
module T =
let myMethod = ...
module M =...
T.myMethod ...
Shub
отступы неправильне
Shub
в общем, компилятор умеет разрешать конфликты имен
Ayrat
Короче, надо пока забить. Мне нужен компилятор под рукой для фактов
Hog
Схватка двух йокодзун прям :)
Vasily
Опять дед с батей по пьяни сцепились
Romɑn
Робятушки, на всякий случай закупите себе консервов побольше
Anonymous
чо опять
Anatoly
Вирус до Мск доехал
Romɑn
чо опять
Да все опять.
Не знаем когда ебанет так, что наш чудесный бизнес повысит цены на макароны до тысяч
Romɑn
Anatoly
Это уже?
Где?
да вроде из италии кто-то там приехал в Москву.
а в Минск - из Ирана