Size: a a a

2020 May 19

CD

Constantine Drozdov in pro.cxx.holywars
Gymmasssorla
Ну хуй знает, наверное не зря потные умные дяди намеренно не делают классический ad hoc полиморфизм в функциональных языках, вместо этого он достигается тайп классами
У хаскеля вроде это происходит из-за особенной системы типов, которая операции не может выводить по аргументам
источник

CD

Constantine Drozdov in pro.cxx.holywars
Она должна по первому аргументу её получить
источник

G

Gymmasssorla in pro.cxx.holywars
Но в Idris таки больно смотреть на int_to_float и подобное говно
источник

G

Gymmasssorla in pro.cxx.holywars
Но зато понятно сразу
источник

CD

Constantine Drozdov in pro.cxx.holywars
Gymmasssorla
Но зато понятно сразу
Ну охуеть
источник

CD

Constantine Drozdov in pro.cxx.holywars
Gymmasssorla
Но зато понятно сразу
Зато просто сломали все метапрограммирование
источник

G

Gymmasssorla in pro.cxx.holywars
Действительно
источник

CD

Constantine Drozdov in pro.cxx.holywars
Gymmasssorla
Действительно
Ну смотри, как минимум в чем проблема метаклассов
источник

CD

Constantine Drozdov in pro.cxx.holywars
В том, что это не предикаты о сущности типа и операций
источник

CD

Constantine Drozdov in pro.cxx.holywars
Я бы хотел, чтобы любой условный метаалгоритм описывал набор свойств в отрыве от собственной уникальной терминологии
источник

G

Gymmasssorla in pro.cxx.holywars
Constantine Drozdov
Я бы хотел, чтобы любой условный метаалгоритм описывал набор свойств в отрыве от собственной уникальной терминологии
Звучит интересно, ничего не понял
источник

CD

Constantine Drozdov in pro.cxx.holywars
Gymmasssorla
Звучит интересно, ничего не понял
Ну вот смотри, тот самый пример с плюсовыми концептами и
requires(T a, T b) {
   { a + b } -> T, //можно складывать
   //a + b == b + a //такого нет, но хочу
}
источник

G

Gymmasssorla in pro.cxx.holywars
Я вижу одну самую существенную проблему в макросах (по крайней мере в Си и Rust): они не описывают своим интерфейсом пред и постусловия, из-за чего либо непонятно как их использовать бывает, либо вообще ошибки описываются как последствия, а не как причины
источник

CD

Constantine Drozdov in pro.cxx.holywars
мы можем локально именовать, что commutative_plus<T> = requires(T a, T b) { a + b == b + a }
источник

CD

Constantine Drozdov in pro.cxx.holywars
я не хочу требовать от пользователя, чтобы он писал implements commutative_plus
источник

G

Gymmasssorla in pro.cxx.holywars
А, ну понял
источник

CD

Constantine Drozdov in pro.cxx.holywars
должно существовать доказательства этого факта, но оно не должно привязываться к терминологии модуля
источник

CD

Constantine Drozdov in pro.cxx.holywars
в этом плане концепты, как их принимают на плюсах, лучше
источник

CD

Constantine Drozdov in pro.cxx.holywars
к ним только нужно добавить средство доказательства, что для любых T a, T b верно, что a + b == b + a
источник

G

Gymmasssorla in pro.cxx.holywars
Constantine Drozdov
к ним только нужно добавить средство доказательства, что для любых T a, T b верно, что a + b == b + a
Inductive judgements называется по-моему
источник