Alex Kost <alez...@gmail.com> skribis: > From f3d21e3ec8a100a966153d03264639ebe48e8872 Mon Sep 17 00:00:00 2001 > From: Alex Kost <alez...@gmail.com> > Date: Mon, 25 Jan 2016 11:18:00 +0300 > Subject: [PATCH] service: Improve 'service-list'. > > * modules/shepherd/service.scm (service-list): Use > 'lookup-canonical-service' on each name instead of removing duplicates > from the final list.
[...] > diff --git a/modules/shepherd/service.scm b/modules/shepherd/service.scm > index f84d1dd..94f2aae 100644 > --- a/modules/shepherd/service.scm > +++ b/modules/shepherd/service.scm > @@ -871,12 +871,13 @@ Return #f if service is not found." > > (define (service-list) > "Return the list of services currently defined." > - (delete-duplicates > - (hash-fold (lambda (key services result) > - (append services result)) > - '() > - %services) > - eq?)) > + (hash-fold (lambda (name services result) > + (let ((service (lookup-canonical-service name services))) > + (if service > + (cons service result) > + result))) > + '() > + %services)) OK, except that we know that SERVICE is necessarily true, because the canonical service for NAME is necessarily among SERVICES. So I would remove the ‘if’ and add a comment explaining the above. OK with this change? Thanks, Ludo’.