Mathieu Lirzin <m...@gnu.org> skribis: > l...@gnu.org (Ludovic Courtès) writes: > >> diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm >> index 34da6ac..c5d5d75 100644 >> --- a/emacs/guix-main.scm >> +++ b/emacs/guix-main.scm >> @@ -954,10 +954,14 @@ GENERATIONS is a list of generation numbers." >> >> (define (package-location-string id-or-name) >> "Return a location string of a package with ID-OR-NAME." >> - (and-let* ((package (or (package-by-id id-or-name) >> - (first (packages-by-name id-or-name)))) >> - (location (package-location package))) >> - (location->string location))) >> + (define package >> + (or (package-by-id id-or-name) >> + (match (packages-by-name id-or-name) >> + (() #f) >> + ((first . rest) first)))) >> + >> + (and package >> + (location->string (package-location package)))) > > Not related to the bug. but it feels weird to use internal defines for > something else than a procedure. > > what about using (not tested): > > (and=> (or (package-by-id id-or-name) > (match (packages-by-name id-or-name) > (() #f) > ((pkg ..1) pkg))) > (compose location->string package-location)) > > I know you love my 'pkg' identifier. ;)
Fixed along these lines in commit 16f4acbddbb38275a52554caf693017465586ac6. (Note that ..1 matches a list of one or more element, not the first element of a list.) Ludo’.