Alexey
Ну и ладно, проехали :)
Anonymous
Roman
Ну коли быть боярином, так да конца
Anonymous
Студёный сказ?
Анна
Hog
Alexey
Потому что инерция правил русского изыга
Hog
Anonymous
Yury
Yury
Anonymous
Спасибо
Анна
J. A. R. Kotlien
Привет.
А есть кто шарит в модулях OCaml и может сказать насколько они мощнее ООП модулей F#?
Мне говорили, что типа типизацию модулей OCaml можно почти всю просчитать на этапе компиляции, а в ООП модулях F# там типа динамический диспатчинг в рантайме (.net классы) и поэтому медленнее.
Ну и интересно с точки зрения продуктивности при решении задачи, позволяет ли сделать всё то же самое, пусть с небольшим оверхедом F#, что делают на модулях в OCaml.
Ayrat
Ayrat
это просто неймспейсы по сути. С небольшими отличиями.
J. A. R. Kotlien
А если класть в модуль шарпа тип (класс) с конструктором и в него передаём другой тип (класс). Это не похоже?
Ayrat
J. A. R. Kotlien
Хочу понять в чём реальное преимущество этих параметризованных модулей перед фшарповским ооп через type-конструкторы.
J. A. R. Kotlien
Надо, наверное, вот в этот пример вниктнуть.
https://stackoverflow.com/questions/36847449/how-to-write-code-in-f-for-what-functors-do-in-ocaml
Ayrat
https://twitter.com/jasonkarns/status/1110985650193477632
Анна
Ayrat
Хорошую новость не грех и два раза повторить :D @Kleidemos
Vladislav
Vladislav
На модули можно typeof :)
Roman
Ayrat
потому что
Ayrat
ну статические классы в общем от неймспейсов недалеко ушли
Ayrat
ну конечно можно)
Ayrat
но это лишь подтверждает что стат класс - эт просто "папочка" для кода
Ayrat
модуль, как по мне, семантически правильно отображает эту мысль, а стат класс - это ооп костыль
Ayrat
это попытка натянуть сову на глобус.
- у нас нет глобальных функций, у нас же ООП, кококо
- но нам нужны глобальные функции, например синус, что же делать?
- давайте запихнём всё в класс Math и будем создавать его каждый раз когда нам нужен синус!
- а давайте лучше придумаем класс который не надо создавать каждый раз и у нас будут как бы глобальные функции, но как бы нет, у нас же ооп кококо
Roman
Roman
В говне и палках
Hog
Зато тепло и уютно
Igor
Igor
Вот как надо
public int max(int a, int b) {
return new If(
new GreaterThan(a, b),
a, b
);
}
Ayrat
Вот чо ещё бесит в стат классах в C# необходимость везде писать static
Ну бля, я ж уже объявил весь класс static, какие там ещё варианты внутри? Конструктор только статичный, другого не будет. Методы туда же, поля, проперти. Но нет, давайте заставим все объявлять со словом static, пусть страдает
Ayrat
Бойлерплейт ради бойлерплейта
Hog
Hog
Просто вербоуз
Hog
Многословный
Ayrat
А, понял тебя сейчас
Roman
Yury
Ayrat
Hog
Hog
Ayrat
Roman
зато можно не объять необъятное.
Для всего остального есть
var vsemogutor = typeof(RuntimeTypeHandle).GetMethod("Allocate", BindingFlags.NonPublic | BindingFlags.Static);
Roman
Anonymous
Anonymous
я такое впервые вижу за всю жизнь
Anonymous
это же не malloc?
Anonymous
Ayrat
Anonymous
я вижу вам там сосвсем плохо (
Roman
Ayrat
Рефлексия....
Ayrat
Ну в хаскеле тоже ансейф есть для странных кастов и мутаций
Anonymous
как в таком коротком слове помещается столько боли?
Anonymous
Ayrat
Roman
Anonymous
особенно бесит валидация на атрибутах
Anonymous
Roman