LINUX.ORG.RU

Типы коллекций

 


0

3

Добрый день. Изучаю активно racket. Вопрос - зачем столько типов коллекций и для каких практических задач они нужны? Выглядит все так, что можно все сделать на списках….

зачем столько типов коллекций

Зачем столько типов инструментов, ведь все можно сделать одним топором?

Nervous ★★★★★
()
Ответ на: комментарий от silver-bullet-bfg

Я ракета не знаю, но если там под коллекцией понимается то же что и везде, то они там нужны разные за тем же зачем и везде?

Список далеко не всегда оптимальное решение.

AntonI ★★★★
()
Ответ на: комментарий от silver-bullet-bfg

Список – последовательная обработка и добавление элементов.

Массив – обработка в произвольно порядке

Хеш – поиск по ключу и добавление/удаление элементов

monk ★★★★★
()
Последнее исправление: monk (всего исправлений: 1)
Ответ на: комментарий от Hertz

Структуры технически являются массивами. Только для каждого элемента массива заданы функции для чтения и записи.

monk ★★★★★
()

Не знаю ракета, но не будь царём, осиль временную сложность алгоритмов и структур данных.

peregrine ★★★★★
()
Ответ на: комментарий от Siborgium

А гетерогенность не забыл?

Так массивы тоже бывают гетерогенными.

#(st 1 "ok" #f)

и

#s(st 1 "ok" #f)

имеют идентичную структуру хранения данных.

monk ★★★★★
()
Ответ на: комментарий от monk

массивы тоже бывают гетерогенными

Не бывают. У тебя это массив «значений». Тип каждого значения может быть разный, но это уже другой вопрос.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Тогда, опять же, чем это отличается от структуры? В структуре такие же значения. Которые могут быть (а могут и не быть) разных типов.

monk ★★★★★
()
Ответ на: комментарий от monk

чем это отличается от структуры

То что в лиспах называется структурой таковым не является. Это просто сахарок на массивах или списках. Фактически массивы или списки с именованными элементами.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

То что в лиспах называется структурой таковым не является.

Интересное утверждение. Где-то есть божественное определение структуры, которому структуры в лиспах не удовлетворяют?

Как правило, «является» и «называется» — слова-синонимы.

Это просто сахарок на массивах или списках.

В любом языке программирования структура либо сахарок на массиве, либо на списке, либо на хеше.

monk ★★★★★
()
Ответ на: комментарий от monk

В любом языке программирования структура либо сахарок на массиве, либо на списке, либо на хеше.

Пожалуй, только в лиспе этот сахарок называется структурой, не являясь ею. В других языках такие штуки называют именованными кортежами, либо ещё как-то в этом роде. И правильно делают, потому что не стоит смешивать понятия.

Структурой является фиксированный набор последовательно расположенных элементов (полей), возможно разных типов (длины), доступных по имени.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Структурой является фиксированный набор последовательно расположенных элементов (полей), возможно разных типов (длины), доступных по имени.

«фиксированный набор последовательно расположенных элементов (полей)» = массив

«возможно разных типов (длины), доступных по имени» = «с именованными элементами»

Вместе именно массив с именованными элементами. Если к структурами на списках/словарях ещё можно предъявлять претензии (в них набор не фиксированный и последовательность не всегда определена), то к лисповым/схемовским/фортовым претензии странны.

monk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.