anchor.diff:  
   (defmacro points-average (pn num)
     "pn should be a list of lists, num means how many digits you want to calculate to average value. For example if pn is (list '(2 3 4) '(1 2 3)), result equal (3/2 5/2 7/2) if num is 3, the result will be (3/2 5/2) if num is 2"
  -  (let* ((arrayNum (gensym))
  -         (len (gensym))
  -         (arrayList (gensym)))
  +  (with-gensyms (arrayNum len arrayList)
       `(let* ((,len ,num)
               (,arrayList ,pn)
               (,arrayNum (length ,arrayList)))
  
positive.code:        tag-c
           (setf result (append result (list x)))))
      ))
  
  (defmacro with-gensyms ((&rest names) &body body)
    `(let ,(loop for n in names collect `(,n (gensym)))
            ,@body))
  
negative.code:         nums)))
  
  (defmacro *list-to-array (l)
    (with-gensyms (ll)
      `(let* ((,ll ,l)
              (len (length ,ll))
           (ar (make-array len :initial-contents ,ll)))
      ar)))
  
  (defmacro *array-to-list (ar)
    (with-gensyms (a)
      `(let ((,a ,ar))
         (loop for i across ,a collect i))))
  
  