Given a tree-structured directory of files and a file path, we want to find the file specified by the path. We will use a Lisp representation in which a symbol is a file or directory name and a list is a directory whose first element is the directory name and whose rest is the contents.
(defun findpath (dirtree path)
(if (null dirtree)
nil ; file not found
(if (consp (first dirtree)) ; directory?
(if (eq (first path) ; dir name ==
(first (first dirtree)))
(findpath ; yes: go in
(rest (first dirtree)) ; dir contents
(rest path)) ; pop path
(findpath ; no: keep
(rest dirtree) ; looking
path))
(if (eq (first path) ; file name ==
(first dirtree))
(first path) ; yes: success
(findpath ; no: keep
(rest dirtree) ; looking
path)) ) ) )
Contents    Page-10    Prev    Next    Page+10    Index