(defun follow-arc (component extend? trie) (let ((arc (assoc component (trie-arcs trie)))) (cond ((not (null arc)) (cdr arc)) ((not extend?) nil) (t (let ((new-trie (make-trie))) (push (cons component new-trie) (trie-arcs trie)) new-trie)))))Source Context