[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#39258] [PATCH 1/4] ui: Cut off search early if any regexp does not
From: |
Ludovic Courtès |
Subject: |
[bug#39258] [PATCH 1/4] ui: Cut off search early if any regexp does not match. |
Date: |
Tue, 09 Jun 2020 10:29:14 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) |
Hi Arun,
Arun Isaac <arunisaac@systemreboot.net> skribis:
> * guix/ui.scm (relevance): When one of the regexps does not match, cut off
> early and return 0. Do not try to match the remaining regexps.
Good catch, LGTM!
> diff --git a/guix/ui.scm b/guix/ui.scm
> index ea5f460865..4a22358963 100644
> --- a/guix/ui.scm
> +++ b/guix/ui.scm
> @@ -1519,11 +1519,16 @@ score, the more relevant OBJ is to REGEXPS."
> (+ relevance (* weight (apply + (map score-regexp
> lst)))))))))
> 0 metrics)))
>
> - (let ((scores (map regexp->score regexps)))
> - ;; Return zero if one of REGEXPS doesn't match.
> - (if (any zero? scores)
> - 0
> - (reduce + 0 scores))))
> + (let loop ((regexps regexps)
> + (total-score 0))
> + (match regexps
> + ((head . tail)
> + (let ((score (regexp->score head)))
> + ;; Return zero if one of PATTERNS doesn't match.
> + (cond
> + ((zero? score) 0)
> + (else (loop tail (+ total-score score))))))
You can use ‘if’ since there are only two arms.
Thanks,
Ludo’.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [bug#39258] [PATCH 1/4] ui: Cut off search early if any regexp does not match.,
Ludovic Courtès <=