<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">I’m not making a claim about history, I wasn’t in the room when they were presented. It’s a claim about creating something that was never really needed by the vast majority of users. It’s nice to have, but it’s not the most useful aspect of template literals/quasi literals. It makes the spec more complicated, and makes changing it more difficult (particularly in this case, where it could change the # of expressions passed to a tag, depending on how it were spec’d, if it were ever added to the specification).<div class=""><br class=""></div><div class="">It’s clearly something that most programmers have no use for in their own projects. While it is certainly nice to have, I don’t think it can be considered the main point. It does little to make anyones work simpler, whereas multiline strings and ${…} expressions are easir to read and understand, compared to how they were done previously.<br class=""><div class=""><br class=""></div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Oct 22, 2015, at 9:00 PM, Mark S. Miller <<a href="mailto:erights@google.com" class="">erights@google.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><br class="Apple-interchange-newline"><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><div class="gmail_quote" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">On Thu, Oct 22, 2015 at 8:58 PM, Caitlin Potter<span class="Apple-converted-space"> </span><span dir="ltr" class=""><<a href="mailto:caitpotter88@gmail.com" target="_blank" class="">caitpotter88@gmail.com</a>></span><span class="Apple-converted-space"> </span>wrote:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div style="word-wrap: break-word;" class="">The history does not matter.</div></blockquote><div class=""><br class=""></div><div class="">Excuse me. "<span style="font-family: Helvetica; font-size: 12px;" class="">Tagged templates were an addition" sounded like a claim about history.</span></div><div class=""><br class=""></div><div class=""> </div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div style="word-wrap: break-word;" class="">It doesn’t make a difference what someone presented or argued for to a room full of people. What matters is how they’re actually used in practice.<div class=""><br class=""></div><div class="">There are some libraries which do some clever things with them. They are not common, there are not a lot of them, and they don’t necessarily perform their tasks easier than a simple recursive descent parser would.</div><div class=""><br class=""></div><div class="">The main use is absolutely string interpolation.</div><div class=""><div class="h5"><div class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Oct 22, 2015, at 8:56 PM, Mark S. Miller <<a href="mailto:erights@google.com" target="_blank" class="">erights@google.com</a>> wrote:</div><br class=""><div class=""><br class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class=""><div class="gmail_quote" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">On Thu, Oct 22, 2015 at 8:54 PM, Caitlin Potter<span class=""> </span><span dir="ltr" class=""><<a href="mailto:caitpotter88@gmail.com" target="_blank" class="">caitpotter88@gmail.com</a>></span><span class=""> </span>wrote:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div style="word-wrap: break-word;" class=""><span class=""><div class="">> JavaScript does not have string interpolation. It has arbitrary value interpolation.</div><div class=""><br class=""></div></span><div class="">Disagree. `foo ${bar} baz` is string interpolation. `${bar}` becomes `ToString(bar)`. Tagged templates were an addition</div></div></blockquote><div class=""><br class=""></div><div class="">That is not the history.</div><div class=""><br class=""></div><div class=""> </div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div style="word-wrap: break-word;" class=""><div class="">that weren’t really needed.</div></div></blockquote><div class=""><br class=""></div><div class="">Disagree. They were and are the main motivation. The fact that the unmarked case does string interpolation is just icing on the cake.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""> </div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div style="word-wrap: break-word;" class=""><div class="">Since they exist, great, people can come up with some clever uses for them. But they’re hardly the common use case, which is definitely string interpolation</div><div class=""><div class=""><div class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Oct 22, 2015, at 8:43 PM, Mark S. Miller <<a href="mailto:erights@google.com" target="_blank" class="">erights@google.com</a>> wrote:</div><br class=""><div class=""><div dir="ltr" class="">JavaScript does not have string interpolation. It has arbitrary value interpolation.<div class=""><br class=""></div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Thu, Oct 22, 2015 at 8:34 PM, Caitlin Potter<span class=""> </span><span dir="ltr" class=""><<a href="mailto:caitpotter88@gmail.com" target="_blank" class="">caitpotter88@gmail.com</a>></span><span class=""> </span>wrote:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div dir="auto" class=""><div class="">Okay, but usability wise, this kind of sucks. There's a reason it's not what people expect, and why other languages with string interpolation behave differently.</div><div class=""><div class=""><div class=""><br class="">On Oct 22, 2015, at 8:24 PM, Allen Wirfs-Brock <<a href="mailto:allen.wirfsbrock@gmail.com" target="_blank" class="">allen.wirfsbrock@gmail.com</a>> wrote:<br class=""><br class=""></div><blockquote type="cite" class=""><div class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Oct 22, 2015, at 4:55 PM, Mark Miller <<a href="mailto:erights@gmail.com" target="_blank" class="">erights@gmail.com</a>> wrote:</div><br class=""><div class=""><div dir="ltr" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class=""><div class="gmail_extra"><br class=""><br class=""><div class="gmail_quote">On Thu, Oct 22, 2015 at 7:20 PM, Caitlin Potter<span class=""> </span><span dir="ltr" class=""><<a href="mailto:caitpotter88@gmail.com" target="_blank" class="">caitpotter88@gmail.com</a>></span><span class=""> </span>wrote:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div dir="auto" class=""><div class="">Cute, but nobody is realistically going to do that.</div></div></blockquote><div class=""><br class=""></div><div class="">Since `${}` is a static error, what do you realistically think people will do? Especially if they meant `${''}`, how do you expect them to react to the static error?</div></div></div></div></div></blockquote><div class=""><br class=""></div><div class="">Just like they do if they have a line of code that reads:</div><div class=""><br class=""></div><div class="">```js</div><div class="">str = ;</div><div class="">```</div><div class=""><br class=""></div><div class="">when they meant</div><div class=""><br class=""></div><div class="">```js</div><div class="">str = ‘’;</div><div class="">```</div><br class=""></div><div class="">It’s just a syntax error.  I probably have syntax errors in 50% of the lines that I initially type.  I parse, and then fix.</div><div class=""><br class=""></div><div class="">Allen</div><br class=""></div></blockquote></div></div></div></blockquote></div><br class=""><br clear="all" class=""><div class=""><br class=""></div>--<span class=""> </span><br class=""><div class="">   <span class=""> </span>Cheers,<br class="">   <span class=""> </span>--MarkM</div></div></div></blockquote></div><br class=""></div></div></div></div></blockquote></div><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class=""><br clear="all" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class=""><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class=""><br class=""></div><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; float: none; display: inline !important;" class="">--<span class=""> </span></span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class=""><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class="">   <span class="Apple-converted-space"> </span>Cheers,<br class="">   <span class="Apple-converted-space"> </span>--MarkM</div></div></blockquote></div><br class=""></div></div></div></div></blockquote></div><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br clear="all" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""></div><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">--<span class="Apple-converted-space"> </span></span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><div class="gmail_signature" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">    Cheers,<br class="">    --MarkM</div></div></blockquote></div><br class=""></div></div></body></html>