From: "Clément Pit--Claudel" <clement.pit@gmail.com>
To: emacs-devel@gnu.org
Subject: Re: RFC: String interpolation
Date: Fri, 9 Dec 2016 17:45:16 -0500 [thread overview]
Message-ID: <d428e876-1db3-b5bd-129f-34d8440f83dc@gmail.com> (raw)
In-Reply-To: <8737hwnc52.fsf@lifelogs.com>
[-- Attachment #1.1: Type: text/plain, Size: 2062 bytes --]
On 2016-12-09 14:19, Ted Zlatanov wrote:
> On Wed, 7 Dec 2016 20:13:41 -0500 Clément Pit--Claudel <clement.pit@gmail.com> wrote:
> I'd rather see either something like Mustache templates or simply using
> the format-spec.el that comes with Emacs. The advantage in my opinion
> (informed by many years of using Perl, where string interpolation is a
> way of life) is that clarity is improved by separating the format spec
> from the data that fills it out, and it's very tempting to stuff logic
> into strings but maintenance is unpleasant.
Thanks for the feedback! Can you share concrete examples in which this makes maintenance harder?
The approach I outlined is significantly influenced by the direction that Python is taking (see the PEP I linked to in the original message).
> (let ((a 12) (b 15))
> (format-spec "%a + %b = %u" (format-spec-make ?a a
> ?b b
> ?u (+ a b)))
Thanks. Are there benefits of this over just (format "%s + %s = %s" a b (+ a b))? The names ?a and ?b seem redundant, and ?u doesn't carry specific meaning. (FWIW, Python has template strings for that purpose, but virtually no one uses them, AFAICT).
Also: how does format-spec deal with formatting sequences, like %-3.2d?
> I see no advantage to this versus `format-time-string'. It's ambiguous
> and the time zone can't be specified without making it more complicated.
Yup; it's unfortunate that ELisp's notion of date doesn't come with a timezone.
> This one in particular is heading in the direction of the way Ansible
> integrates Jinja templates, which I think is not great compared to a
> more Lispy approach.
I have no strong feelings either way. I like the way Python is going, so it feels natural to suggest the same direction for Emacs. I view it as a convenient DSL for producing strings, just like the loop macro is a good DSL for iterating and accumulating results — and we're a Lisp, so we're good at DSLs :)
Clément.
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2016-12-09 22:45 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-08 1:13 RFC: String interpolation Clément Pit--Claudel
2016-12-08 8:27 ` Andreas Schwab
2016-12-08 8:38 ` Joost Kremers
2016-12-08 9:05 ` Philippe Vaucher
2016-12-08 18:25 ` Clément Pit--Claudel
2016-12-08 9:02 ` Philippe Vaucher
2016-12-08 18:22 ` Clément Pit--Claudel
2016-12-08 14:43 ` Joost Kremers
2016-12-08 18:37 ` Clément Pit--Claudel
2016-12-08 20:04 ` Stefan Monnier
2016-12-09 8:57 ` Joost Kremers
2016-12-08 15:51 ` Drew Adams
2016-12-08 18:21 ` Clément Pit--Claudel
2016-12-08 20:38 ` Richard Stallman
[not found] ` <<E1cF5SK-0000HO-EL@fencepost.gnu.org>
2016-12-08 22:04 ` Drew Adams
2016-12-08 19:05 ` Stefan Monnier
2016-12-08 19:31 ` Clément Pit--Claudel
2016-12-08 21:31 ` Stefan Monnier
2016-12-10 16:01 ` Clément Pit--Claudel
2016-12-09 19:19 ` Ted Zlatanov
2016-12-09 22:45 ` Clément Pit--Claudel [this message]
2016-12-11 2:53 ` Ted Zlatanov
2016-12-11 18:46 ` Lars Ingebrigtsen
2016-12-11 18:56 ` Clément Pit--Claudel
2016-12-11 19:34 ` Lars Ingebrigtsen
2016-12-11 17:38 ` Stefan Monnier
2016-12-11 17:53 ` Clément Pit--Claudel
2016-12-10 14:11 ` Lars Ingebrigtsen
2016-12-10 14:25 ` Clément Pit--Claudel
2016-12-10 15:39 ` Lars Ingebrigtsen
2016-12-10 15:49 ` Clément Pit--Claudel
2016-12-10 16:01 ` Yuri Khan
2016-12-10 17:58 ` Clément Pit--Claudel
2016-12-11 17:47 ` Stefan Monnier
2016-12-11 19:31 ` Yuri Khan
2016-12-11 20:12 ` Stefan Monnier
2016-12-11 9:35 ` Richard Stallman
2016-12-11 16:29 ` Clément Pit--Claudel
2016-12-11 18:42 ` Lars Ingebrigtsen
2016-12-12 19:41 ` Richard Stallman
2016-12-11 18:41 ` Lars Ingebrigtsen
2016-12-11 21:05 ` Helmut Eller
2016-12-11 21:26 ` Lars Ingebrigtsen
2016-12-12 2:39 ` Stefan Monnier
2016-12-12 9:44 ` Lars Ingebrigtsen
2016-12-12 13:03 ` Stefan Monnier
2016-12-12 14:47 ` Lars Ingebrigtsen
2016-12-12 15:04 ` Stefan Monnier
2016-12-12 15:26 ` Lars Ingebrigtsen
2016-12-12 17:05 ` Stefan Monnier
2016-12-12 17:12 ` Lars Ingebrigtsen
2016-12-12 17:23 ` Stefan Monnier
2016-12-12 13:40 ` Clément Pit--Claudel
2016-12-12 14:43 ` Lars Ingebrigtsen
2016-12-12 14:54 ` Clément Pit--Claudel
2016-12-12 17:14 ` Stefan Monnier
2016-12-12 17:46 ` Paul Eggert
2016-12-12 18:33 ` Lars Ingebrigtsen
2016-12-12 19:51 ` Ted Zlatanov
2016-12-12 20:41 ` Paul Eggert
2016-12-12 23:40 ` Paul Eggert
2016-12-13 17:42 ` Richard Stallman
2016-12-13 18:05 ` Paul Eggert
2016-12-13 23:55 ` Lars Ingebrigtsen
2016-12-14 0:07 ` Paul Eggert
2016-12-14 0:10 ` John Wiegley
2016-12-14 0:14 ` Lars Ingebrigtsen
2016-12-14 0:17 ` Paul Eggert
2016-12-14 0:26 ` John Wiegley
2016-12-14 1:48 ` Drew Adams
2016-12-14 2:48 ` Elias Mårtenson
2016-12-14 3:33 ` Drew Adams
2016-12-14 3:52 ` Elias Mårtenson
2016-12-14 13:52 ` Lars Brinkhoff
2016-12-14 13:57 ` Lars Brinkhoff
2016-12-14 0:24 ` Drew Adams
2016-12-14 0:21 ` Clément Pit--Claudel
2016-12-14 14:10 ` Lars Ingebrigtsen
2016-12-14 17:00 ` Richard Stallman
2016-12-12 19:43 ` Richard Stallman
2016-12-12 21:11 ` Lars Ingebrigtsen
2016-12-13 17:41 ` Richard Stallman
2016-12-13 17:43 ` Lars Ingebrigtsen
2016-12-14 17:01 ` Richard Stallman
2016-12-13 1:04 ` Ted Zlatanov
2016-12-12 16:39 ` Helmut Eller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=d428e876-1db3-b5bd-129f-34d8440f83dc@gmail.com \
--to=clement.pit@gmail.com \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.