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
Полезный механизм для организации очереди или представления данных с “циклической природой“ (например, календарные даты), упрощающий “многократные обходы” в определенном порядке. Часто реализуется в медиаплеерах и для организации циклического буфера для реализации управления сетевым трафиком. В принципе, не “базовая операция“, поскольку, для списков всегда можно имитировать циклическую структуру, используя блоки и изменяя ссылки внутри них.