Size: a a a

2021 April 30

EG

Emmanuel Goldstein in rust_offtopic
И хаскеллевские листы это вроде как более или менее вектора
источник

EG

Emmanuel Goldstein in rust_offtopic
То есть оно динамически забокшенное
То есть это Box<dyn Show>.
источник

DS

Doge Shibu in rust_offtopic
Ну да, это пример чуть про другое, конечно, я тебя просто не сразу понял.

Точный аналог твоего примера - это data Wut a = (Show a) => Wut a
источник

B

Börgar in rust_offtopic
оно там полувектор-полулист
источник

EG

Emmanuel Goldstein in rust_offtopic
Такого я тоже не особо видел в хаскеллекоде, но, опять же, я не так часто его читаю
источник

EG

Emmanuel Goldstein in rust_offtopic
Оно там достаточно сильно вектор, иначе бы было чудовищно медленно
источник

DS

Doge Shibu in rust_offtopic
Оно компилится запросто
источник

EG

Emmanuel Goldstein in rust_offtopic
Не, это-то понятно
источник

DS

Doge Shibu in rust_offtopic
Нет, это листы
источник

DS

Doge Shibu in rust_offtopic
Это прям настоящие листы
источник

EG

Emmanuel Goldstein in rust_offtopic
Не верю?
Оно бы промахивалось мимо кеша и тормозило.
источник

B

Börgar in rust_offtopic
оно типа ноды листа, но лежат вместе, как вектор
источник

EG

Emmanuel Goldstein in rust_offtopic
На каждой итерации
источник

DS

Doge Shibu in rust_offtopic
Спасает их фьюзион
источник

EG

Emmanuel Goldstein in rust_offtopic
Это безумие
источник

DS

Doge Shibu in rust_offtopic
Оно тормозит и промахивается, если у тебя реальный список будет создан
источник

DS

Doge Shibu in rust_offtopic
Но обычно они не создаются, потому что оптимизации на рерайт рулах
источник

B

Börgar in rust_offtopic
а конкат у них O(1), тк они слипаются вместе
источник

B

Börgar in rust_offtopic
как листы
источник

EG

Emmanuel Goldstein in rust_offtopic
Ну подожди, ты же не хочешь сказать, что оптимизатор Haskell настолько умный, чтобы при какой-то типовой задаче вроде «пропарсить JSON и получить из листа в нём последние десять элементов» вообще никак не хранить сам лист
источник