I`m trying to find some easy way to cut lists to the limited size.
(By the way, expression 
Then I have tried to create a function, that will push an item to the list and cut it to the size I need.
  (push what where)
  (if (> (length where) how-long)
    (set 'where (0 how-long where)))
  0)
And... it won`t work. I have found some method in "Code Patterns": make a context and transfer variables like db:db.
But I`m pretty sure, there should be some other way to expain to the function, which variable I want to be pushed.
			
			
			
				Your error is that you assume that, if you call 
(push-cut 7 L 3)
L and variable 
  (push what (eval where))
  (if (> (length (eval where)) how-long)
      (set where (0 how-long (eval where)))
     0))
  
(set 'L '(1 2 3 4))
(push-cut 7 'L 3) 
(println L) ;(7 1 2)
If you do not like that apostrophe in 
  (push (eval what) (eval where))
  (if (> (length (eval where)) (eval how-long))
      (set (eval 'where) (0 (eval how-long) (eval where)))
      0))
(set 'L '(1 2 3 4))
(push-cut (+ 1 6) L (+ 1 2))
(println L) ;(7 1 2)
 And this is if you want it to work with more general references:
  (eval (expand '(begin (push (eval what) where)
                        (if (> (length where (eval how-long)))
                            (setf where (0 (eval how-long) where))
                            0))
                'where)))
(set 'L '(1 2 3 4))
(push-cut (+ 1 6) L (+ 1 2))
(println L) ;(7 1 2)
(set 'L '((1 2 3 4)(3 4 5 6) (5 6 7 8)))
(push-cut 12 (L 1) 2)
(println L) ;((1 2 3 4) (12 3) (5 6 7 8))
(exit)
Heavy use of 
			
			
				Thank you. I`ll try these variants now.