On Wednesday, 15 February 2017 at 20:21:45 UTC, Nick Treleaven
wrote:
On Wednesday, 15 February 2017 at 20:09:46 UTC, Timothee Cour
wrote:
This thread completely diverged from the original post, which
was propsing `::` instead of `from!`:
```
void fun(T)(std.stdio::File input, T value) if
(std.traits::isIntegral!T)
{...}
```
instead of:
```
void fun(T)(Module!"std.stdio".File input, T value) if
(Module!"std.traits".isIntegral!T)
{...}
```
I see it as a clear improvment in readability (see original
post for details along with shortcomings of `from!` approach )
I really think allowing `with (module_!"std.foo")` before
declarations is a better solution from a DRY perspective, plus
it works for UFCS. This is a more general change that has other
benefits that apply to any static aggregate e.g. enum names -
`with(Enum)`, not just imports.
both are useful:
* std.stdio::File is nice for 1-off symbols only used 1 or a few
times; simple syntax and doesn't add indentation / nesting
* with(module_!"std.foo") is useful for scoping imports to cover
several declarations and being DRY; at the expense of adding
indentation/nesting and less nice syntax