Better items->entries routine

This commit is contained in:
Tony Garnock-Jones 2024-04-09 14:41:21 +02:00
parent 9a0697e3c5
commit 86b74cd807
1 changed files with 6 additions and 7 deletions

View File

@ -24,13 +24,12 @@
(require syndicate/schemas/dataspacePatterns)
(define (items->entries pats)
(define-values (entries max-i)
(for/fold [(entries (hash)) (max-i #f)]
[(i (in-naturals)) (p (in-list pats))]
(values (if (Pattern-discard? p) entries (hash-set entries i p))
i)))
(if (and max-i (not (hash-has-key? entries max-i)))
(hash-set entries max-i (Pattern-discard))
(define npats (length pats))
(define entries
(for/fold [(entries (hash))] [(i (in-naturals)) (p (in-list pats))]
(if (Pattern-discard? p) entries (hash-set entries i p))))
(if (and (positive? npats) (not (hash-has-key? entries (- npats 1))))
(hash-set entries (- npats 1) (Pattern-discard))
entries))
(define (entries->items entries on-missing)