Makoto Satoh
makot****@yahoo*****
2003年 10月 15日 (水) 09:57:58 JST
佐藤です。 Webで、WindowsのExplorerのようなインタフェースを実現しよ うと思っています。 ファイルクラスを用意して、ルートディレクトリからそのファ イルがあるディレクトリまでのディレクトリ階層は、ディレク トリ名のリストで持たせました。 そのファイルを表示しているときに、そのファイルはどのディ レクトリにあるのか、いわゆるbreadcrumbを作りたいと思って います。 下記のようなコードを書いて、その下のような結果となり、一 応所望の動作をしているのですが、再帰の勉強としてここはこ うしたほうがより良いというアドバイスをいただけたら幸いで す。よろしくお願いします。 #!/usr/local/bin/gosh (use text.html-lite) (define dirs '("/" "foo" "bar" "baz")) (define (breadcrumb dirs) (let* ((base "hoge.cgi?dir=/") (root `(,(html:a :href base " / ")))) (let loop ((rest (cdr dirs)) (prev-url base) (result root)) (cond ((null? rest) (reverse result)) (else (loop (cdr rest) (string-append prev-url (car rest) "/") (cons (list (html:a :href (string-append prev-url (car rest) "/") (car rest)) " / ") result))))))) 結果: <html><body><a href="hoge.cgi?dir=/"> / </a ><a href="hoge.cgi?dir=/foo/">foo</a > / <a href="hoge.cgi?dir=/foo/bar/">bar</a > / <a href="hoge.cgi?dir=/foo/bar/baz/">baz</a > / </body ></html > (この下にファイルを表示するつもりです) -- Makoto Satoh