X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=tt.rkt;h=409ef51296b8e88fc1d997924179e6d6ab66b934;hb=6df41218feef6f9a5fb726a49abfbdf4f80b5030;hp=c606b2e3a803bd3b018d556ddbf2c585f29a7480;hpb=78398948dd83a319ed91a2fa8d843fbf30af39bc;p=tt.git diff --git a/tt.rkt b/tt.rkt index c606b2e..409ef51 100644 --- a/tt.rkt +++ b/tt.rkt @@ -34,6 +34,9 @@ ; - d | download ; - u | upload ; - calls user-configured command to upload user's own feed file to their server +; +; Looks like a better CLI parser than "racket/cmdline": +; https://docs.racket-lang.org/natural-cli/ #lang racket @@ -50,6 +53,7 @@ (struct feed (nick uri)) (define (concurrent-filter-map num_workers f xs) + ; TODO preserve order of elements OR communicate that reorder is expected ; TODO switch from mailboxes to channels (define (make-worker id f) (define parent (current-thread)) @@ -83,6 +87,15 @@ (for-each thread-wait threads) results) +(module+ test + (define n-workers 10) + (define given (list + (λ (x) (if (even? x) x #f)) + (range 11))) + (check-equal? + (sort (apply concurrent-filter-map (cons n-workers given)) <) + (sort (apply filter-map given ) <))) + (define (msg-print out-format odd msg) (printf (match out-format