DIP10005: Dependency-Carrying Declarations is now available for community feedback

Timon Gehr via Digitalmars-d digitalmars-d at puremagic.com
Wed Dec 14 04:10:35 PST 2016


On 14.12.2016 10:01, Joseph Rushton Wakeling wrote:
> On Wednesday, 14 December 2016 at 07:17:57 UTC, Jacob Carlborg wrote:
>> On 2016-12-14 03:23, Andrei Alexandrescu wrote:
>>> On 12/13/16 9:22 PM, Hatem Oraby wrote:
>>
>>>> with(import std.range)
>>>> bool equal(R1, R2) if (isInputRange!R1 && isInputRange!R2)
>>>> { ... }
>>>
>>> I considered this, then figured with is superfluous. -- Andrei
>>
>> It could allow to have a better control of the scope which the import
>> affects, i.e.:
>>
>> with(import std.range)
>> {
>>   void foo(T) if (isInputRange!T)
>>   void bar(T) if (isInputRange!T)
>> }
>
> Trouble is, there's no real difference between doing that, vs. creating
> a standalone module containing `foo` and `bar` with `import std.range;`
> as a top-level import.
> ...

This point is independent of syntax.


> ...
> It's a shame, because unlike Andrei I don't feel use of `with` is in
> principle superfluous: it has a value in clarifying intention, while
> allowing the use of traditional `import something` syntax.  But
> special-casing of where `with` does and doesn't create a scope seems ...
> less good.

'static with'?


More information about the Digitalmars-d mailing list