anchor.diff:  (defpackage #:KMP
  +  (:export #:do-kmp
  +           #:*test-string*
  +           #:*test-pattern*)
     (:use #:CL))
   
   (in-package #:KMP)
  +
  +(defvar *test-string* "bbc abcdab abcdabcdabde")
  +(defvar *test-pattern* "abcdabd")
   
   ;;; make the string index table
   (defun get-pattern-from-back (str)
  
positive.code: (defun do-kmp (s p)
    (let* ((strList (coerce s 'list))
           (patList (coerce p 'list))
           (indexTable (get-index-number p)))
      (print strList)
      (print patList)
      (print indexTable)#|
      (do ((sPoint (car strList))
           (pPoint (car |#))
  
negative.code: 
  (defun make-index-table (p)
    (let ((pList (coerce p 'list))
          (indexTable '(-1)))
      (loop for i from 1 to (1- (length pList)) do
           (setf indexTable (append indexTable
                                    (list (get-index-number (subseq p 0 i))))))
      indexTable))
  