From 86b74cd807bd54942095091ab342a7ea33e13442 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Tue, 9 Apr 2024 14:41:21 +0200 Subject: [PATCH] Better items->entries routine --- syndicate/smart-pattern.rkt | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) 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)