Advertisement
Guest User

Untitled

a guest
Jan 30th, 2021
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; создаем двусторонний итератор
  2. (defun iter (lst)
  3.   (cons nil lst))
  4.  
  5. ; удаляем текущий элемент итератора
  6. (defun erase (i)
  7.   (if (cdr i)
  8.     (cons (car i) (cddr i))
  9.     i))
  10.  
  11. ; возвращаем текущий элемент
  12. (setq take cadr)
  13.  
  14. ; перематываем итератор обратно
  15. (defun rewind (i)
  16.   (cons nil (append (reverse (car i)) (cdr i))))
  17.  
  18. ; возвращаем сам список
  19. (defun uniter (i)
  20.     (cdr (rewind i)))
  21.  
  22. (defun insert (i item)
  23.   (cons (car i) (cons item (cdr i))))
  24.  
  25. ; перемещаем двухсторонний итератор на шаг вперед
  26. ; начальный вид итератора - (cons nil lst)
  27. ; конечный вид - ((lst))
  28. (defun next (i)
  29.   (if (cdr i)
  30.     (cons
  31.       ; добавляем ячейку взад
  32.       (cons (cadr i) (car i))
  33.       ; укорачиваем ячейку вперед
  34.       (cddr i))
  35.     i))
  36.  
  37. ; перемещаем двусторонний итератор на шаг назад
  38. (defun prev (i)
  39.   (if (car i)
  40.     (cons
  41.       (cdar i)
  42.       (cons (caar i) (cdr i)))
  43.     i))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement