GNU bug report logs -
#39599
[PATCH 0/2] New build system: copy-build-system
Previous Next
Reported by: Pierre Neidhardt <mail <at> ambrevar.xyz>
Date: Fri, 14 Feb 2020 12:52:02 UTC
Severity: normal
Tags: patch
Done: Pierre Neidhardt <mail <at> ambrevar.xyz>
Bug is archived. No further changes may be made.
Full log
Message #50 received at 39599 <at> debbugs.gnu.org (full text, mbox):
Pierre Neidhardt <mail <at> ambrevar.xyz> writes:
> + (define* (make-file-predicate matches matches-regexp #:optional (default-value #t))
> + (if (or matches matches-regexp)
> + (lambda (file)
> + (any (lambda (pred) (pred file))
> + (append
> + (map (lambda (str)
> + (lambda (f) (string-suffix? str f)))
> + (or matches '()))
> + (map (lambda (regexp)
> + (lambda (f) (regexp-exec (make-regexp regexp) f)))
> + (or matches-regexp '())))))
> + (const default-value)))
This looks too complicated.
I think this is clearer:
--8<---------------cut here---------------start------------->8---
(define* (make-file-predicate suffixes matches-regexp #:optional (default-value #t))
(if (or suffixes matches-regexp)
(let* ((suffixes (or suffixes '()))
(regexps (map make-regexp (or matches-regexp '())))
(predicates (append
(map (lambda (str)
(cut string-suffix? str <>))
suffixes)
(map (lambda (regexp)
(cut regexp-exec regexp <>))
regexps))))
(lambda (file)
(any (cut <> file) predicates)))
(const default-value)))
--8<---------------cut here---------------end--------------->8---
Also, as Mathieu wrote, please don’t use SET!.
--
Ricardo
This bug report was last modified 5 years and 147 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.