\documentclass[]{article}
\usepackage{amsmath,graphicx,supertabular,hyperref,tabularx,ifthen}
\title{TIP \#293: Argument Expansion with Leading \{*\}}
\date{November 02, 2006}
\author{Miguel Sofer}
\urlstyle{sf}
\setlength{\parskip}{1ex}
\setlength{\parindent}{0pt}
\def\tipversion$#1${\texttt{\$#1\$}}
\def\tiplangle#1{\ensuremath{<}}
\def\tiprangle#1{\ensuremath{>}}
\def\tipbar#1{\ensuremath{|}}
\def\tipmail#1#2{\(\langle\){\small\expandafter\url{#1@#2}}\(\rangle\)}
\ifx\pdfoutput\undefined
\newcommand{\tipimage}[2]{\typeout{Make sure you download #1.eps}\ifthenelse{\lengthtest{0.8\textwidth>#2}\and\lengthtest{0pt<#2}}{\includegraphics{#1.eps}}{\includegraphics[width=0.8\textwidth]{#1.eps}}}
\newcommand{\tipxref}[1]{}
\newcommand{\tipxrefend}{}
\else
\newcommand{\tipimage}[2]{\typeout{Make sure you create #1.pdf}\ifthenelse{\lengthtest{0.8\textwidth>#2}\and\lengthtest{0pt<#2}}{\includegraphics{#1.pdf}}{\includegraphics[width=0.8\textwidth]{#1.pdf}}}
\pdfcatalog{/PageMode /UseOutlines}
\newcommand{\tipxref}[1]{\pdfannotlink attr {/C [0.5 0.5 1.0] /Border [0 0 1]} goto name {#1}}
\newcommand{\tipxrefend}{\pdfendlink}
\fi
\newenvironment{tipabstract}{\begin{abstract}}{\end{abstract}}
\begin{document}\maketitle
\begin{center}\begin{tabularx}{\linewidth}{|r@{: }X|}\hline
\textbf{TIP \#293}&\textbf{Argument Expansion with Leading \{*\}}\\\hline
Author&

Miguel Sofer \tipmail{msofer}{users.sourceforge.net}
\\
Created&Thursday, \(\text{2}^{\text{nd}}\) November 2006\\
Type&Project\\
Tcl Version&\(8.5\)\\
State&Final\\
Vote&Done\\
Version&\tipversion$Revision: 1.4 $\\
Obsoletes&157\\
Post History&\\
\hline\end{tabularx}\end{center}
\thispagestyle{empty}\pagestyle{empty}
\begin{tipabstract}

Tcl shall use \textbf{\{*\}} to denote argument expansion, replacing the current \textbf{\{expand\}}.
\end{tipabstract}
\tableofcontents\setcounter{page}{0}\clearpage\pagestyle{plain}

\section{Rationale}

There seems to be a consensus that the functionality of \textbf{\{expand\}} is exactly what was needed, but the syntax could be nicer. The problem, both back in 2003 and today, is that there is no general agreement on which is the best one. However, the issue of ugliness is regularly revived in the mailing lists so it is not going away soon. Moreover, an alpha release in a popular distribution allows the use of \textbf{\{\}} instead of \textbf{\{expand\}}.

A compromise solution, \textbf{\{*\}}, is less verbose and ``ugly'' than \textbf{\{expand\}}, and less prone to typographical errors than plain \textbf{\{\}}. It is inspired using the mnemonic that the character ``*'' is already used to denote ``all items'' in other contexts.

\section{Detailed Proposal}

After two years experience with \textbf{\{expand\}}, this TIP proposes the following amendment to \cite{tip157}:
\begin{enumerate}
\item{}
The officially sanctioned expansion syntax will henceforth be \textbf{\{*\}}, in replacement of the previous \textbf{\{expand\}}.
\setcounter{enumi}{1}
\item{}
The usage of both \textbf{\{expand\}} and \textbf{\{\}} will be deprecated.
\setcounter{enumi}{2}
\item{}
This is a syntax-only change.
\end{enumerate}

\section{Compatibility}

Note that this TIP removes \textbf{\{expand\}} and \textbf{\{\}} as prefix-syntax, which will break code that users might already have in production based off earlier alpha release of 8.5.

\section{Copyright}

This document has been placed in the public domain.

\section{Colophon}

\textit{TIP AutoGenerator --- written by Donal K. Fellows}
\begin{thebibliography}{TIP \#1}
\addcontentsline{toc}{section}{References}
\bibitem[TIP \#157]{tip157}
Kevin B. Kenny,
Peter Spjuth,
Donal K. Fellows,
Don Porter,
\emph{Argument Expansion with Leading \{expand\}},
on-line at \url{http://purl.org/tcl/tip/157.html}
\end{thebibliography}
\end{document}
