Mathieu Lirzin (2016-03-07 22:58 +0300) wrote: > 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.
I have the same feeling. > 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 like this variant! -- Alex