Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Lisp/Clojure etc: вопрос по эффективности неизменяемых списков / 3 сообщений из 3, страница 1 из 1
27.11.2013, 11:45
    #38479516
unicornmirage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Lisp/Clojure etc: вопрос по эффективности неизменяемых списков
Привет всем.

Читал про lisp и clojure, там сказано, в частности, что списки - неизменяемые.
Т.е. если мы хотим добавить новый элемент в какой то определённый список list1, то на выходе из ф-ции будет уже новый list2.

Я пока не копал вглубь насчет механизмов, как это сделано, но возник вопрос, как это всё же происходит? Происходит ли всякий раз копирование в памяти целиком списка? Либо новый список - это просто реорганизация ссылок на старый список+ ссылка на новый элемент?
...
Рейтинг: 0 / 0
27.11.2013, 12:59
    #38479718
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Lisp/Clojure etc: вопрос по эффективности неизменяемых списков
unicornmirage,

Список состоит из ячеек. Чтобы изменить список, не нужно менять все ячейки, достаточно изменить измененные, и пометить неизменные таким образом, что бы было видно, что они используются двумя копиями списка, старой и новой, чтобы потом можно было бы скопировать их при изменении в одном из списков.

Примерно так видимо делается в clojure.

В common.lisp cons ы тупо копируются, в основном, на сколько я знаю.
...
Рейтинг: 0 / 0
27.11.2013, 13:52
    #38479840
k0rvin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Lisp/Clojure etc: вопрос по эффективности неизменяемых списков
MasterZivВ common.lisp cons ы тупо копируются, в основном, на сколько я знаю.

Да, дабы избежать неприятных ситуаций, поскольку списки в CL мутабельны.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Lisp/Clojure etc: вопрос по эффективности неизменяемых списков / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]