List Processing

Когда “мы говорим Lisp - подразумеваем” … списки. То есть мы имеем дело, в некотором смысле, с “алгеброй списков”, а значит с некоторым набором операций с ними. В системе автором PicoLisp выделены отдельным списком функции, манипулирующие со списками - car cdr caar cadr cdar cddr caaar caadr cadar caddr cdaar cdadr cddar cdddr caaaar caaadr caadar caaddr cadaar cadadr caddar cadddr cdaaar cdaadr cdadar cdaddr cddaar cddadr cdddar cddddr nth con cons conc circ rot list need range full make made chain link yoke copy mix append delete delq replace insert remove place strip split reverse flip trim clip head tail stem fin last member memq mmeq sect diff index offset prior assoc rassoc asoq rasoq flood rank sort uniq group length size bytes val set xchg push push1 push1q pop ++ shift cut queue fifo idx balance depth get fill apply
https://picolisp.tiddlyhost.com/#List%20Processing
К данной теме уже был подход в одном из первых здесь постов, когда акцентировались символы для обозначения функций, манипулирующих с элементами точечной пары - cXr - List Processing . Так же были попытки обратить внимание, что суть больше в этой самой точечной паре, чем в списках, которые реализованы, фактически, в любой системе и, кстати, не только обносвязные списки, но и двусвязные. Более того, поставлен вопрос о принципиальной разнице между списками и массивами и их эффективности. Тема до сих пор открытая. Есть эксперименты работы с динамическими массивами и с автоматическим управлением памяти без сборки мусора. То есть, пока нет однозначных ответов на вопросы о преимуществах односвязного списка перед двусвязным (Refal), а так же о примуществах списка перед массивом, в принципе, даже на концептуальном уровне. Автор системы Rebol, которая концептуально ассоциируется с PicoLisp, вообще, ушел даже от использования самого термина “список“, заменив его “серией“. Кстати, я не поленился и составил для сравнения оба списка вместе - List processing PicoLisp и series Rebol.
Последнее время все больше говорят о сетях и графах, как о универсальных представлениях, в противовес последовательной и иерархический организации данных и сплошь и рядом, ассоциативный массив выходит на первый план, кстати, сам ассоциирующийся, не только с кучей (бинарным деревом), а, именно, как массив точечных пар … массив пар стеков … массив пар массивов … и т.д. и т.п. Именно, вокруг этой структуры, собственно, крутяться все объекты любых систем, включая тот же “символ” PicoLisp.
Subscribe to my newsletter
Read articles from Sergey Shishkin directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Sergey Shishkin
Sergey Shishkin
Всегда чему-то учусь!