GNU bug report logs - #36772
feature request: checked variant of "substitute*"

Previous Next

Package: guix;

Reported by: Robert Vollmert <rob <at> vllmrt.net>

Date: Tue, 23 Jul 2019 12:51:01 UTC

Severity: wishlist

To reply to this bug, email your comments to 36772 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-guix <at> gnu.org:
bug#36772; Package guix. (Tue, 23 Jul 2019 12:51:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Robert Vollmert <rob <at> vllmrt.net>:
New bug report received and forwarded. Copy sent to bug-guix <at> gnu.org. (Tue, 23 Jul 2019 12:51:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Robert Vollmert <rob <at> vllmrt.net>
To: bug-guix <at> gnu.org
Subject: feature request: checked variant of "substitute*"
Date: Tue, 23 Jul 2019 14:49:46 +0200
I think it would be great to have the following variant of substitute*:

(substitute*-once filename (pattern vars) body)

which acts like the usual substitute-*, except it also asserts that the
substitution applies to exactly one line in the file, causing a build
failure otherwise.

In the cases where this is sufficient (I believe most), it would make
substitution work quite a bit more reliably, making it both easier to
debug substitution when first packaging, and noticing more easily when
they need to be adapted on upgrades.

(It would be possible to make the signature a bit more flexible and to
allow multiple files or patterns as in substitute*, but that would
make the meaning of “applies exactly once” a bit unclear, so I’d prefer
to not do that. Similarly, I find it cleaner to potentially call
substitute*-once several times in a row with different substitutions to
make the ordering of effects explicit.)

(I’d be happy to supply a patch myself eventually, but the syntax rule
business is a bit out of reach at this point.)





Information forwarded to bug-guix <at> gnu.org:
bug#36772; Package guix. (Tue, 23 Jul 2019 13:36:01 GMT) Full text and rfc822 format available.

Message #8 received at 36772 <at> debbugs.gnu.org (full text, mbox):

From: Ricardo Wurmus <rekado <at> elephly.net>
To: Robert Vollmert <rob <at> vllmrt.net>
Cc: 36772 <at> debbugs.gnu.org
Subject: Re: bug#36772: feature request: checked variant of "substitute*"
Date: Tue, 23 Jul 2019 15:35:19 +0200
Hi Robert,

> I think it would be great to have the following variant of substitute*:
>
> (substitute*-once filename (pattern vars) body)
>
> which acts like the usual substitute-*, except it also asserts that the
> substitution applies to exactly one line in the file, causing a build
> failure otherwise.

I agree that the effect of substitute* should be checked.  I think
substitute* should fail when one of its clauses failed to match
anything.

Each clause could also accept an optional argument to make them only
match one location.  We wouldn’t have to duplicate the macro for that
and it’s a simple extension to failing on zero matches.

What do you think?

--
Ricardo





Information forwarded to bug-guix <at> gnu.org:
bug#36772; Package guix. (Tue, 23 Jul 2019 13:43:02 GMT) Full text and rfc822 format available.

Message #11 received at 36772 <at> debbugs.gnu.org (full text, mbox):

From: Robert Vollmert <rob <at> vllmrt.net>
To: Ricardo Wurmus <rekado <at> elephly.net>
Cc: 36772 <at> debbugs.gnu.org
Subject: Re: bug#36772: feature request: checked variant of "substitute*"
Date: Tue, 23 Jul 2019 15:41:58 +0200

> On 23. Jul 2019, at 15:35, Ricardo Wurmus <rekado <at> elephly.net> wrote:
> 
> 
> Hi Robert,
> 
>> I think it would be great to have the following variant of substitute*:
>> 
>> (substitute*-once filename (pattern vars) body)
>> 
>> which acts like the usual substitute-*, except it also asserts that the
>> substitution applies to exactly one line in the file, causing a build
>> failure otherwise.
> 
> I agree that the effect of substitute* should be checked.  I think
> substitute* should fail when one of its clauses failed to match
> anything.
> 
> Each clause could also accept an optional argument to make them only
> match one location.  We wouldn’t have to duplicate the macro for that
> and it’s a simple extension to failing on zero matches.
> 
> What do you think?

That sounds like a good improvement, too. I think the important part is
ensuring the substitution matches at all, maybe we could leave out the
“at most once” part. (I doubt it would be used a lot if it’s not the default.)

Cheers
Robert





Information forwarded to bug-guix <at> gnu.org:
bug#36772; Package guix. (Thu, 25 Jul 2019 17:41:01 GMT) Full text and rfc822 format available.

Message #14 received at 36772 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Ricardo Wurmus <rekado <at> elephly.net>
Cc: 36772 <at> debbugs.gnu.org, Robert Vollmert <rob <at> vllmrt.net>
Subject: Re: bug#36772: feature request: checked variant of "substitute*"
Date: Thu, 25 Jul 2019 19:40:48 +0200
Hi,

Ricardo Wurmus <rekado <at> elephly.net> skribis:

>> I think it would be great to have the following variant of substitute*:
>>
>> (substitute*-once filename (pattern vars) body)
>>
>> which acts like the usual substitute-*, except it also asserts that the
>> substitution applies to exactly one line in the file, causing a build
>> failure otherwise.
>
> I agree that the effect of substitute* should be checked.  I think
> substitute* should fail when one of its clauses failed to match
> anything.
>
> Each clause could also accept an optional argument to make them only
> match one location.  We wouldn’t have to duplicate the macro for that
> and it’s a simple extension to failing on zero matches.
>
> What do you think?

That’d be a useful extension.

Ludo’.




This bug report was last modified 5 years and 322 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.