provide structs, comment headers

svn: r17479
This commit is contained in:
Eli Barzilay 2010-01-05 09:24:47 +00:00
parent 078208b9b7
commit acb214f2a2

View File

@ -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)