Andreas Enge <andr...@enge.fr> skribis: > On Tue, Jan 19, 2016 at 10:20:42AM +0100, Ludovic Courtès wrote: >> This is a bit verbose. I think it would be nice to have a data >> structure to describe what we are deleting, along these lines >> (untested): > > I agree, computer science 101 tells us to use a function when repeating the > same sequence of statements on separate data. This is what I did in the new > attached patch; I also "flattened out" the deletion as you suggest. > > However, the data structure thing was too complicated for me and I think not > really needed.
I think it was clearer and separated concerns better (filtering vs. deleting.) :-) The version you propose is acceptable too. > From 8a2ebb8163c54f80f2a5e4708956b87b134ada85 Mon Sep 17 00:00:00 2001 > From: Andreas Enge <andr...@enge.fr> > Date: Fri, 15 Jan 2016 16:00:47 +0100 > Subject: [PATCH] gnu: Add texlive-minimal. > > * gnu/packages/texlive.scm (texlive-texmf-minimal, texlive-minimal): > New variables. [...] > + (with-directory-excursion "texmf-dist" > + (for-each delete-file-recursively > + '("doc" "source" "tex4ht")) > + ;; Delete all subdirectories of "fonts", except for those > + ;; named "cm", that is, "afm/public/amsfonts/cm", This comment is too indented and redundant with the code below, I think. > + (let ((delete > + ;; delete all files and directories in SUBDIR > + ;; except for those given in the list EXCLUDE Make it an inner ‘define’, to reduce indentation. Also the docstring should be below the formal parameter list, and should be a sentence. > + (lambda (subdir exclude) I’d make exclude a keyword parameter, for clarity. With these changes, it would look like: (define* (delete directory #:key (except '())) ;; Delete all the files and directories in DIRECTORIES, except those ;; listed in in EXCEPT. …) How does that sound? Thanks! Ludo’.