Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; создаем двусторонний итератор
- (defun iter (lst)
- (cons nil lst))
- ; удаляем текущий элемент итератора
- (defun erase (i)
- (if (cdr i)
- (cons (car i) (cddr i))
- i))
- ; возвращаем текущий элемент
- (setq take cadr)
- ; перематываем итератор обратно
- (defun rewind (i)
- (cons nil (append (reverse (car i)) (cdr i))))
- ; возвращаем сам список
- (defun uniter (i)
- (cdr (rewind i)))
- (defun insert (i item)
- (cons (car i) (cons item (cdr i))))
- ; перемещаем двухсторонний итератор на шаг вперед
- ; начальный вид итератора - (cons nil lst)
- ; конечный вид - ((lst))
- (defun next (i)
- (if (cdr i)
- (cons
- ; добавляем ячейку взад
- (cons (cadr i) (car i))
- ; укорачиваем ячейку вперед
- (cddr i))
- i))
- ; перемещаем двусторонний итератор на шаг назад
- (defun prev (i)
- (if (car i)
- (cons
- (cdar i)
- (cons (caar i) (cdr i)))
- i))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement