String identity template tag

Andrea Giammarchi andrea.giammarchi at gmail.com
Thu Dec 13 07:53:13 UTC 2018


I agree with Mark, and I wonder why `String.tag` is not the obvious choice
here, since every interpolation is also coerced as String

On Thu, Dec 13, 2018 at 9:34 AM Isiah Meadows <isiahmeadows at gmail.com>
wrote:

> I mean equivalence to untagged behavior, if that helps.
>
> FWIW, as stated previously, I'm not married to the name.
> On Wed, Dec 12, 2018 at 20:31 Mark Miller <erights at gmail.com> wrote:
>
>>
>> On Wed, Dec 12, 2018 at 5:24 PM Isiah Meadows <isiahmeadows at gmail.com>
>> wrote:
>>
>>> The template is being expanded as if the template itself is untagged.
>>
>>
>> Does this mean that you describe what tagged templates do, or what
>> untagged templates do, as "expanding" something? If so, what is the
>> intuition behind that prior usage of "expand"?
>>
>>
>>
>>> The point of this is a template tag that just does the default untagged
>>> behavior of coercing all expressions to strings and joining the whole thing
>>> together.
>>>
>>
>> I certainly agree that the name should suggest equivalence to the default
>> untagged behavior. I just never would have thought to describe that
>> behavior as "expanding" something. What is it expanded into?
>>
>>
>>
>>> On Wed, Dec 12, 2018 at 20:21 Mark Miller <erights at gmail.com> wrote:
>>>
>>>> What is the intuition behind "expand"? What is being expanded, and what
>>>> is it expanding into?
>>>>
>>>>
>>>>
>>>> On Tue, Dec 11, 2018 at 10:59 PM Isiah Meadows <isiahmeadows at gmail.com>
>>>> wrote:
>>>>
>>>>> Those names a little too generic for my liking here. What about
>>>>> `String.expand(template, ...params)`?
>>>>>
>>>>> And also, let's not try to bake a traditional template engine into the
>>>>> JS spec - syntactic template strings already work well enough.
>>>>>
>>>>> -----
>>>>>
>>>>> Isiah Meadows
>>>>> contact at isiahmeadows.com
>>>>> www.isiahmeadows.com
>>>>>
>>>>> On Wed, Dec 12, 2018 at 1:13 AM Michael Luder-Rosefield
>>>>> <rosyatrandom at gmail.com> wrote:
>>>>> >
>>>>> > Why not String.tag or .tagged?
>>>>> >
>>>>> > While we're at it, is there any good reason not to have something
>>>>> like this:
>>>>> >
>>>>> > ```
>>>>> > String.template = (template : String,
>>>>> taggerFn=String.identity/tag/tagged : Function) => (keys : Array | Object)
>>>>> => taggerFn(template, (keys is Array) ? ...keys : keys)
>>>>> > // apologies for pseudo-semi-functional code
>>>>> > // having keys be an object allows template to be filled by key name
>>>>> rather than just index
>>>>> > ```
>>>>> > This would make templates closer to the traditional usage, where the
>>>>> template comes first and is later passed values to be filled in with.
>>>>> Having the taggerFn as an argument allows for things like Isiah's
>>>>> escape-then-apply tagging examples.
>>>>> >
>>>>> >
>>>>> > On Wed, 12 Dec 2018 at 12:51 Isiah Meadows <isiahmeadows at gmail.com>
>>>>> wrote:
>>>>> >>
>>>>> >> I'm not married to `identity`, and I agree the name is probably not
>>>>> >> ideal. I'm more concerned about functionality, though.
>>>>> >>
>>>>> >> -----
>>>>> >>
>>>>> >> Isiah Meadows
>>>>> >> contact at isiahmeadows.com
>>>>> >> www.isiahmeadows.com
>>>>> >>
>>>>> >> On Tue, Dec 11, 2018 at 5:41 AM T.J. Crowder
>>>>> >> <tj.crowder at farsightsoftware.com> wrote:
>>>>> >> >
>>>>> >> > On Mon, Dec 10, 2018 at 7:08 PM Isiah Meadows
>>>>> >> > <isiahmeadows at gmail.com> wrote:
>>>>> >> > >
>>>>> >> > > It'd be *way* easier to construct simple template tags if there
>>>>> was a
>>>>> >> > > built-in identity tag
>>>>> >> >
>>>>> >> > Wholeheartedly agree, a couple of months ago I considered posting
>>>>> something very similar, both for utility reasons and in hopes that it would
>>>>> be an optimization target (being a standard operation).
>>>>> >> >
>>>>> >> > I find the name `identity` unilluminating, though, partially
>>>>> because it's not quite the same meaning as the usual "identity" function
>>>>> (`function identity(x) { return x; }`), though it's close. `assemble`?
>>>>> >> >
>>>>> >> > -- T.J. Crowder
>>>>> >> _______________________________________________
>>>>> >> es-discuss mailing list
>>>>> >> es-discuss at mozilla.org
>>>>> >> https://mail.mozilla.org/listinfo/es-discuss
>>>>> _______________________________________________
>>>>> es-discuss mailing list
>>>>> es-discuss at mozilla.org
>>>>> https://mail.mozilla.org/listinfo/es-discuss
>>>>>
>>>>
>>>>
>>>> --
>>>>   Cheers,
>>>>   --MarkM
>>>>
>>>
>>
>> --
>>   Cheers,
>>   --MarkM
>>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20181213/86b7358c/attachment.html>


More information about the es-discuss mailing list