From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Re: New =?utf-8?Q?=E2=80=98--list-generations=E2=80=99?= and =?utf-8?Q?=E2=80=98--delete-generations=E2=80=99?= options Date: Thu, 12 Sep 2013 14:26:16 +0200 Message-ID: <87zjrins47.fsf@gnu.org> References: <87vc2o4qwc.fsf@gnu.org> <87hae81uvo.fsf@gnu.org> <87bo4fcbcz.fsf@karetnikov.org> <878uzj6nev.fsf@gnu.org> <877gf1yftq.fsf@karetnikov.org> <87bo4dspl2.fsf@gnu.org> <87a9jxeh05.fsf@gnu.org> <87r4d9r2lv.fsf@gnu.org> <874na4jfp4.fsf_-_@karetnikov.org> <87eh97616m.fsf@gnu.org> <87bo48xdgb.fsf@karetnikov.org> <87hadz9gze.fsf@gnu.org> <87fvtjdl7y.fsf@karetnikov.org> <87bo444e9q.fsf@gnu.org> <87fvtfzihg.fsf@karetnikov.org> <87ioybxdun.fsf@gnu.org> <877geq9wx6.fsf@karetnikov.org> <87zjrmgcjh.fsf@gnu.org> <87ob80os3c.fsf@karetnikov.org> <87li336ofs.fsf@gnu.org> <87wqmmxutb.fsf@karetnikov.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:36478) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VK63S-0003cI-KA for guix-devel@gnu.org; Thu, 12 Sep 2013 08:31:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VK63M-00048a-4w for guix-devel@gnu.org; Thu, 12 Sep 2013 08:31:26 -0400 Received: from hera.aquilenet.fr ([141.255.128.1]:52388) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VK63L-00048E-Ua for guix-devel@gnu.org; Thu, 12 Sep 2013 08:31:20 -0400 In-Reply-To: <87wqmmxutb.fsf@karetnikov.org> (Nikita Karetnikov's message of "Thu, 12 Sep 2013 13:17:52 +0400") List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Nikita Karetnikov Cc: guix-devel@gnu.org Nikita Karetnikov skribis: >> Probably this can reduce to a big =E2=80=98cond=E2=80=99, which would be= even more >> readable: > >> (cond ((maybe-integer) >> =3D> >> list) >> ((string-match "^([0-9]+)\\.\\.([0-9]+)$" str) >> =3D> >> (lambda (match) >> ...)) >> ...) > > Are you sure? I haven=E2=80=99t found a way to make =E2=80=98cond=E2=80= =99 as readable as =E2=80=98or=E2=80=99. Yes, it makes it easier to enumerate all the cases, and to reason about it. For instance, in =E2=80=98string->generations=E2=80=99, getting rid of =E2= =80=98maybe-*-range=E2=80=99 and instead inlining the =E2=80=98string-match=E2=80=99 calls in =E2=80=98c= ond=E2=80=99 would greatly clarify things IMO: (cond ((maybe-integer) ...) ((maybe-comma-separated-integers) ...) ((string-match p1 x) =3D> ...) ((string-match p2 x) =3D> ...) ((string-match p3 x) =3D> ...) (else #f)) > I=E2=80=99m attaching a sketchy version. If you don=E2=80=99t see any pr= oblems, I=E2=80=99ll > try to integrate this code into =E2=80=98package.scm=E2=80=99. I=E2=80=99d prefer clearer case analysis as shown above. Thanks, Ludo=E2=80=99.