(defvar n)
(setq n 3)
(defun list-reverse (list)
(do ((z 1 (- n 1))
(x list (cdr x))
(y '() (cons (car x) y)))
((= z 0)
y)))
(list-reverse '(a b c d f e g)) => '(a b c)
и оно никак. Надо обязательно на do сделать, а то я с ним не разберусь.
Там люди вот такое выдают на do.
(defun factorial (n)
(do (( j n (- j 1))
(f 1 (* j f )))
((= j 0) f )))
(defun list-reverse (list n)
(do ((n (- n 1))
(x list (cdr x))
(y '() (cons (car x) y)))
((= n 0) y)
(print (list n x y))))
( LIST-REVERSE '(b n v g f k) 3)
(2 (B N V G F K) NIL)
(2 (N V G F K) (B))
(2 (V G F K) (N B))
(2 (G F K) (V N B))
(2 (F K) (G V N B))
(2 (K) (F G V N B))
(2 NIL (K F G V N B))
(2 NIL (NIL K F G V N B))
(2 NIL (NIL NIL K F G V N B))
(2 NIL (NIL NIL NIL K F G V N B))
(2 NIL (NIL NIL NIL NIL K F G V N B))
(2 NIL (NIL NIL NIL NIL NIL K F G V N B))
(2 NIL (NIL NIL NIL NIL NIL NIL K F G V N B))
(2 NIL (NIL NIL NIL NIL NIL NIL NIL K F G V N B))
(2 NIL (NIL NIL NIL NIL NIL NIL NIL NIL K F G V N B))
(2 NIL (NIL NIL NIL NIL NIL NIL NIL NIL NIL K F G V N B))
(2 NIL (NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL K F G V N B))
и т.д.
пока не понял почему
ну вот с + заработала
(defun list-reverse (list)
(do ((n 0 (+ n 1))
(x list (cdr x))
(y '() (cons (car x) y)))
((= n 3) y)
(print (list n x y))))
LIST-REVERSE
CL-USER> ( LIST-REVERSE '(b v c x z))
(0 (B V C X Z) NIL)
(1 (V C X Z) (B))
(2 (C X Z) (V B))
(C V B)