anchor.diff:  	(split-seq (search candidate seq) seq (length candidate))
   	(values seq nil))))
   
  +;;; Parsers
   (defun parse-name-and-weight (val)
     (multiple-value-bind (name weight) (split-at " " val)
       (values name (parse-integer (string-trim '(#\( #\)) weight)))))
  
positive.code: (ql:quickload "split-sequence")
  
  (defun split-seq (position list &optional (separator-length 0))
    (values (subseq list 0 position)
  	  (subseq list (+ position separator-length))))
  
negative.code: 	    (concatenate 'list base-list (list :children (parse-child-list children)))
  	    base-list)))))
  
  (defun parse-input (filename)
    (let ((entries (make-hash-table :test #'equal)))
      (with-open-file (in filename)
        (do ((line (read-line in nil) (read-line in nil)))
  	  ((not line) entries)
  	(let ((entry (parse-entry line)))
  	  (setf (gethash (getf entry :name) entries) entry))))
      ;; Link children to parents
      (maphash (lambda (k v)
  	       (dolist (child (getf v :children))
  		 (setf (getf (gethash child entries) :parent) k)))
  	     entries)
      entries))
  