(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