Size: a a a

2020 February 10

AZ

Alex Zhukovsky in rust_offtopic
var
 l: TList<TPerson>;
begin
 l.Sort(
   lambda (aLeft, aRight) as aLeft.Age < aRight.Age
);
end.


В паскале даже лямбды есть
источник

AZ

Alex Zhukovsky in rust_offtopic
Andrey @ozkriff Lesnikov
просто стремный код, который сильно намекает, что чего-то с архитектурой решения не гладко
Ну надо глянуть как в хаскелле сделан Num трейт
источник

AL

Andrey @ozkriff Lesnikov in rust_offtopic
Alex Zhukovsky
Ну надо глянуть как в хаскелле сделан Num трейт
вообще, алгебраические пирадмиды типов - не сильно решенная задача где угодно. они везде так или иначе стремноватые.
источник

EG

Emmanuel Goldstein in rust_offtopic
В хаскелле меня всё ещё бесит то, что названия у функций стандартной библиотеки нечитаемые.
Даже если они состоят не из символов, а из букв, то называются очень коротко. ap — спасибо, очень понятно сходу, что это делает. Традиция использовать однобуквенные переменные не помогает.
источник

AZ

Alex Zhukovsky in rust_offtopic
Andrey @ozkriff Lesnikov
вообще, алгебраические пирадмиды типов - не сильно решенная задача где угодно. они везде так или иначе стремноватые.
class  (Eq a, Show a) => Num a  where
   (+), (-), (*)    :: a -> a -> a
   negate           :: a -> a
   abs, signum      :: a -> a
   fromInteger      :: Integer -> a

       -- Minimal complete definition:
       --      All, except negate or (-)
   x - y            =  x + negate y
   negate x         =  0 - x
источник

G

Gymmasssorla in rust_offtopic
Emmanuel Goldstein
В хаскелле меня всё ещё бесит то, что названия у функций стандартной библиотеки нечитаемые.
Даже если они состоят не из символов, а из букв, то называются очень коротко. ap — спасибо, очень понятно сходу, что это делает. Традиция использовать однобуквенные переменные не помогает.
Угу, ещё есть названия функций X и X' в стандартной библиотеке. Спасибо, сразу понятно, что делает функция
источник

AZ

Alex Zhukovsky in rust_offtopic
ну в общем предполагается только 3 оператора
источник

EG

Emmanuel Goldstein in rust_offtopic
Alex Zhukovsky
class  (Eq a, Show a) => Num a  where
   (+), (-), (*)    :: a -> a -> a
   negate           :: a -> a
   abs, signum      :: a -> a
   fromInteger      :: Integer -> a

       -- Minimal complete definition:
       --      All, except negate or (-)
   x - y            =  x + negate y
   negate x         =  0 - x
Тут, кстати, нет ни деления, ни целочисленного деления
источник

EG

Emmanuel Goldstein in rust_offtopic
Оба в других тайпклассах
источник

EG

Emmanuel Goldstein in rust_offtopic
В итоге изменил формулу — поменялась сигнатура функции и всех функций, которые её вызывают
источник

AL

Andrey @ozkriff Lesnikov in rust_offtopic
Alex Zhukovsky
class  (Eq a, Show a) => Num a  where
   (+), (-), (*)    :: a -> a -> a
   negate           :: a -> a
   abs, signum      :: a -> a
   fromInteger      :: Integer -> a

       -- Minimal complete definition:
       --      All, except negate or (-)
   x - y            =  x + negate y
   negate x         =  0 - x
я не просто про Num, я в целом про все виды пирамид/башен: https://github.com/rust-lang/rust/issues/4231
источник

AZ

Alex Zhukovsky in rust_offtopic
Emmanuel Goldstein
В итоге изменил формулу — поменялась сигнатура функции и всех функций, которые её вызывают
ну это нормально
источник

AZ

Alex Zhukovsky in rust_offtopic
я к тому, что в хаскелле всё это побито на тайпкласссы
источник

AZ

Alex Zhukovsky in rust_offtopic
то есть num собрал один мега-трейт из кучи операторных
источник

AZ

Alex Zhukovsky in rust_offtopic
а в хаскелле операторные сгруппированы друг с другом (сложение-вычитание, деление, умножение-целочисленное деление, ...)
источник

EG

Emmanuel Goldstein in rust_offtopic
Alex Zhukovsky
class  (Eq a, Show a) => Num a  where
   (+), (-), (*)    :: a -> a -> a
   negate           :: a -> a
   abs, signum      :: a -> a
   fromInteger      :: Integer -> a

       -- Minimal complete definition:
       --      All, except negate or (-)
   x - y            =  x + negate y
   negate x         =  0 - x
А, да, и ещё из-за этого нельзя переопределять арифметические операторы
источник

AZ

Alex Zhukovsky in rust_offtopic
и дальше ты на них уже можешь
источник

AL

Andrey @ozkriff Lesnikov in rust_offtopic
https://docs.rs/alga/0.9.2/alga/general/index.html вот это еще занятное начинание с клевым аскиартом)
источник

EG

Emmanuel Goldstein in rust_offtopic
Если не переопределяешь их все
источник

AL

Andrey @ozkriff Lesnikov in rust_offtopic
источник