shiro #4424(2007/11/27 07:59 GMT) [ Scheme ] Rating0/0=0.00
1 2 3 4 5 6 7 8 9 10
(use srfi-1) (use srfi-13) (define (ls pathlist dir) (let* ((prefix (string-trim-right dir #[/])) (rx (string->regexp #`"^,(regexp-quote prefix)/"))) (filter-map (lambda (p) (and-let* ([m (rx p)]) (regexp-replace* (m'after) #/(?<=\/).*/ ""))) pathlist)))
Rating0/0=0.00-0+
2 replies [ reply ]
shiro
#4424()
[
Scheme
]
Rating0/0=0.00
gosh> (ls '("aaa/bbb" "aaa/ccc" "aaa/ddd/eee" "ddd/bbb/eee") "aaa/")
("bbb" "ccc" "ddd/")
gosh> (ls '("aaa/bbb" "aaa/ccc" "aaa/ddd/eee" "ddd/bbb/eee") "aaa/ddd/")
("eee")
gosh> (ls '("aaa/bbb" "aaa/ccc" "aaa/ddd/eee" "ddd/bbb/eee") "aaa/ddd")
("eee")
gosh> (ls '("aaa/bbb" "aaa/ccc" "aaa/ddd/eee" "ddd/bbb/eee") "aaa/bbb")
()
lsにはリストが渡されるので、クレバーなデータ構造をls内で毎回作ってもあまり速度に貢献しないだろうと判断。文字列マッチで済ませています。
Rating0/0=0.00-0+
2 replies [ reply ]