169 похожих чатов

Вот я часто видел примеры с связаным списком, длина которого

определена на уровне типов, так что можно всякие прикольные штуки доказывать, но я никогда не видел, чтобы создавался массив (не связанный список) и на уровне типов какие-то штучки гарантировались. Так вот вопрос, даже два:
1) Можно ли сделать самому (с нуля) на голом Haskell тип массив, в котором доступ к элементам был за O(1) (а не O(n) как в списке)
2) Можно ли к такому массиву прикрутить длину на уровне типов?

13 ответов

23 просмотра

Можно

1) реализовать массив чуть ниже голого Хаскеля можно (primitive) и чуть выше можно (vector), просто на Хаскеле нельзя 2) да, конечно, не вижу, какие тут могут быть препятствия

Cheese Syrowiecki
1) реализовать массив чуть ниже голого Хаскеля мож...

1) Haskell Report 2010 требует, чтобы все имплементации включали в себя Data.Array, https://www.haskell.org/onlinereport/haskell2010/haskellch14.html#x22-20100014

Bodigrim🇺🇦
1) Haskell Report 2010 требует, чтобы все имплемен...

технически, не обещает доступа за O(1), это может быть дерево

Max Силинг
технически, не обещает доступа за O(1), это может ...

в теоретической «другой имплементации хаскелля»

Max Силинг
технически, не обещает доступа за O(1), это может ...

дерево тоже может быть O(1), но не всегда, конечно

Max Силинг
не понимаю, как?

на практике у вас не может более 2^64 узлов (а на самом деле сильно меньше), значит, у двоичного дерева высота ограничена сверху константой 64

Cheese Syrowiecki
на практике у вас не может более 2^64 узлов (а на ...

ну кам он. на практике в связном списке не может быть больше 2^64 узлов, поэтому его длина ограничена сверху константой 2^64.

Max Силинг
ну кам он. на практике в связном списке не может б...

нет, 64 гораздо меньше, а если 4-битные маски использовать, то вообще 3-4 хопа в худшем случае. такой константой можно пренебречь. 2^64 нельзя пренебречь

Cheese Syrowiecki
нет, 64 гораздо меньше, а если 4-битные маски испо...

да, log(N) это очень хорошо. поэтому и можно сказать rapid.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта