anchor.diff:           ;(print strList)
            (setf result (append result (list (subseq strList 0 i)))))
       result))
  -
  +#|
   (defun max-list (list)
         (loop for element in list maximizing element))
  +|#
   
   (defun get-index-number (str)
     (let ((pre-table (get-pattern-from-head str))
  
positive.code:                             (setf num (length list1)))
                    num)) pre-table bot-table))
      ;(print indexNum)
      (setf indexNum (max-list indexNum))))
  
  (defun make-index-table (p)
    (let ((pList (coerce p 'list))
  
negative.code:                                   (list (get-index-number (subseq p 0 i))))))
      indexTable))
  
  (defun matchp (char1 char2)
    (cond ((char= char1 char2) 0)
          (t 1)))
  
  (defun do-kmp (s p)
    (let* ((strList (coerce s 'list))
           (patList (coerce p 'list))
           (indexTable (make-index-table p))
           (lenPatList (length patList)))
      ;(progn (print strList) (print patList) (print indexTable) (print lenPatList))
      (do* ((strPoint 0 (cond ((= tellStat 0) (incf strPoint))
                              ((and (= tellStat 1) (= patPoint 0))
                               (incf strPoint))
                              ((= tellStat 1) strPoint)))
            (patPoint 0 (cond ((= tellStat 0) (incf patPoint))
                              ((and (= tellStat 1) (/= (nth patPoint indexTable) -1))
                               (nth patPoint indexTable))
                              (t 0)))
            (tellStat (matchp (nth strPoint strList) (nth patPoint patList))
                      (matchp (nth strPoint strList) (nth patPoint patList)))
            ;(testP (progn (print strPoint) (print patPoint) (print tellStat)) (progn (print strPoint) (print patPoint) (print tellStat)))
            )
           ((and (= patPoint (1- lenPatList)) (= tellStat 0))
            (print strList) (print patList)
            (print (+ (- strPoint lenPatList) 2))
            ))))
  
  