circ ... circ?

Кольцевой список, “карусель”, еще переводят как круговой или циклический.
circ - продуцирует циклический список всех аргументов, объединяя их в список и затем соединяя CDR последней ячейки с первой ячейкой.
circ? - возвращает хвост циклического списка, если any является циклическим списком, в противном случае NIL
.
: (circ 'a 'b 'c)
-> (a b c .)
: (circ? 'a)
-> NIL
: (circ? (1 2 3))
-> NIL
: (circ? (1 . (2 3 .)))
-> (2 3 .)
https://picolisp.tiddlyhost.com/#circ
Полезный механизм для организации очереди или представления данных с “циклической природой“ (например, календарные даты), упрощающий “многократные обходы” в определенном порядке. Часто реализуется в медиаплеерах и для организации циклического буфера для реализации управления сетевым трафиком. В принципе, не “базовая операция“, поскольку, для списков всегда можно имитировать циклическую структуру, используя блоки и изменяя ссылки внутри них.
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
Всегда чему-то учусь!