diff options
| author | Shawn Wagner <shawnw.mobile@gmail.com> | 2023-02-11 03:33:20 -0800 |
|---|---|---|
| committer | Shawn Wagner <shawnw.mobile@gmail.com> | 2023-02-11 03:33:20 -0800 |
| commit | 4b7306cb22dacc86ef4c4ac216648a4e11a993b1 (patch) | |
| tree | d2c022abbc80b26fb3772eb00930bfd2500cba22 | |
| parent | 4a2d626b8cd07a735a954f21ba1ee8a18eb4c30d (diff) | |
| download | perlweeklychallenge-club-4b7306cb22dacc86ef4c4ac216648a4e11a993b1.tar.gz perlweeklychallenge-club-4b7306cb22dacc86ef4c4ac216648a4e11a993b1.tar.bz2 perlweeklychallenge-club-4b7306cb22dacc86ef4c4ac216648a4e11a993b1.zip | |
Challenge 203.2: Solution in Racket
| -rw-r--r-- | challenge-203/shawn-wagner/racket/ch-2.rkt | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/challenge-203/shawn-wagner/racket/ch-2.rkt b/challenge-203/shawn-wagner/racket/ch-2.rkt new file mode 100644 index 0000000000..23f245fde7 --- /dev/null +++ b/challenge-203/shawn-wagner/racket/ch-2.rkt @@ -0,0 +1,19 @@ +#lang racket/base + +(require racket/file racket/list) + +(define (copy-directory-tree source target) + (let* ([source (string->path source)] + [target (string->path target)] + [source-component-length (length (explode-path source))] + [targets + (fold-files + (lambda (path type paths) + (if (eq? type 'dir) + (cons (apply build-path target (drop (explode-path path) source-component-length)) paths) + paths)) + '() + source)]) + (for-each make-directory* targets))) + +(copy-directory-tree "a/b/c" "x/y") |
