provide structs, comment headers
svn: r17479
This commit is contained in:
parent
078208b9b7
commit
acb214f2a2
|
@ -1,16 +1,21 @@
|
|||
#lang scheme/base
|
||||
|
||||
(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)
|
||||
|
||||
;; ----------------------------------------------------------------------------
|
||||
;; Type definitions
|
||||
|
||||
(define-struct tree (name))
|
||||
(define-struct tree (name [data #:auto #:mutable]))
|
||||
(define-struct (file tree) ())
|
||||
(define-struct (dir tree) (subs))
|
||||
|
||||
;; ----------------------------------------------------------------------------
|
||||
;; Tree utilities
|
||||
|
||||
(define (tree-foldl f init tree)
|
||||
(let loop ([tree tree] [base #""] [acc init])
|
||||
(if (file? tree)
|
||||
|
@ -55,6 +60,7 @@
|
|||
'() tree))
|
||||
|
||||
;; ----------------------------------------------------------------------------
|
||||
;; Tree filtering
|
||||
|
||||
;; 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
|
||||
|
@ -237,6 +243,7 @@
|
|||
(or (dir-filter pred tree) (make-dir (tree-name tree) '()))))
|
||||
|
||||
;; ----------------------------------------------------------------------------
|
||||
;; Reading a tree from a directory
|
||||
|
||||
(define (get-tree dir)
|
||||
(define (subs dir)
|
||||
|
|
Loading…
Reference in New Issue
Block a user