On 18/09/2011, at 6:52 PM, Joseph Wright wrote:
> Part of the reasoning we had here is that \tl_new:Nn was being used
> almost entirely for declaring constants. We have a conceptually-separate
> \tl_const:Nn for that job.
Also, for variables that are not constant but may well be initialised with a default value, I personally find it a bit cleaner to have whatever mechanism that will be setting the variable later to also set the default. E.g. from 2e
\DeclareOption{foo}{\def\@foo{#1}}
\ExecuteOptions{foo=default} % rather than \def\@foo{default}
I know this isn't as efficient, but I think semantically it's a little clearer.
> I guess an
> alternative is to set up the code such that a stream which has been
> closed will give a suitable error message if one tries to use it.
I prefer this option; I think it's natural to want to write
\iow_new:N \g_foo_iow
...
\cs_new:Nn \foo_internal_something:n
{
\iow_open:Nn \g_foo_iow {#1.output}
...
\iow_close:N
}
-- Will