diff --git a/syndicate/smart-pattern.rkt b/syndicate/smart-pattern.rkt index 8ed2ae3..4855b73 100644 --- a/syndicate/smart-pattern.rkt +++ b/syndicate/smart-pattern.rkt @@ -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)