provide structs, comment headers
svn: r17479
This commit is contained in:
parent
078208b9b7
commit
acb214f2a2
|
@ -1,16 +1,21 @@
|
||||||
#lang scheme/base
|
#lang scheme/base
|
||||||
|
|
||||||
(provide tree-foldl tree-foldr tree-for-each print-tree
|
(provide tree-foldl tree-foldr tree-for-each print-tree
|
||||||
tree->list tree->path-list and: or: not: tree-filter get-tree)
|
tree->list tree->path-list and: or: not: tree-filter get-tree
|
||||||
|
(struct-out tree) (struct-out file) (struct-out dir))
|
||||||
|
|
||||||
(require scheme/list)
|
(require scheme/list)
|
||||||
|
|
||||||
;; ----------------------------------------------------------------------------
|
;; ----------------------------------------------------------------------------
|
||||||
|
;; Type definitions
|
||||||
|
|
||||||
(define-struct tree (name))
|
(define-struct tree (name [data #:auto #:mutable]))
|
||||||
(define-struct (file tree) ())
|
(define-struct (file tree) ())
|
||||||
(define-struct (dir tree) (subs))
|
(define-struct (dir tree) (subs))
|
||||||
|
|
||||||
|
;; ----------------------------------------------------------------------------
|
||||||
|
;; Tree utilities
|
||||||
|
|
||||||
(define (tree-foldl f init tree)
|
(define (tree-foldl f init tree)
|
||||||
(let loop ([tree tree] [base #""] [acc init])
|
(let loop ([tree tree] [base #""] [acc init])
|
||||||
(if (file? tree)
|
(if (file? tree)
|
||||||
|
@ -55,6 +60,7 @@
|
||||||
'() tree))
|
'() tree))
|
||||||
|
|
||||||
;; ----------------------------------------------------------------------------
|
;; ----------------------------------------------------------------------------
|
||||||
|
;; Tree filtering
|
||||||
|
|
||||||
;; A tree-filtering predicate is a function that receives a tree, and returns
|
;; A tree-filtering predicate is a function that receives a tree, and returns
|
||||||
;; either #t/#f to include or exclude it, or it can return a function to be
|
;; either #t/#f to include or exclude it, or it can return a function to be
|
||||||
|
@ -237,6 +243,7 @@
|
||||||
(or (dir-filter pred tree) (make-dir (tree-name tree) '()))))
|
(or (dir-filter pred tree) (make-dir (tree-name tree) '()))))
|
||||||
|
|
||||||
;; ----------------------------------------------------------------------------
|
;; ----------------------------------------------------------------------------
|
||||||
|
;; Reading a tree from a directory
|
||||||
|
|
||||||
(define (get-tree dir)
|
(define (get-tree dir)
|
||||||
(define (subs dir)
|
(define (subs dir)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user