std.log available for viewing

KennyTM~ kennytm at gmail.com
Mon May 30 13:12:59 PDT 2011


On May 31, 11 03:56, Timon Gehr wrote:
>> On May 31, 11 00:59, Jose Armando Garcia wrote:
>> [snip]
>>>
>>> Walter, what do you think about adding __MODULE__ to the language? It
>>> will work similar to __FILE__ and __LINE__ but instead get replaced by
>>> the name of the module. This would be really useful for std.log's
>>> verbosity filtering feature.
>>>
>>> I can send a pull request once I am familiar with dmd's code.
>>>
>>> Thanks,
>>> -Jose
>>
>> I'd recommend making __MODULE__ return the actual module object instead
>> of the module name, in case anybody wants to implement it. The latter
>> can be easily got by __MODULE__.stringof[7..$] or parsing
>> std.traits.mangledName!__MODULE__ if you need the fully-qualified name,
>> but the reverse is not true.
>>
>> Moreover, making __MODULE__ a true module object allows a global scope
>> be passed around implicitly, e.g. currently you need to write
>>
>>       int f(int x) { return x*x-2; }
>>       void main() {
>>         auto m = map!((y){ return f(y)+1; })([1,6,8]);
>>         //            ^^^^^^^^^^^^^^^^^^^^^ ugly
>>
>> but with __MODULE__ it is possible to reduce the syntactic noise:
>>
>>         auto m = map!"f(a)+1"([1,6,8]);
>>
>> by declaring std.functional.unaryFun as
>>
>>       template unaryFun(alias f, ....., alias mod=__MODULE__) {
>>          ...
>>          with (mod) {
>>            mixin(f);
>>          }
>>          ...
>
> While this is already quite useful, stuff like this wont work:
> import std.algorithm;
> void main(){
>      int f(int x){return x*x-2;}
>      auto m = map!"f(a)+1"([1,6,8]);
> }
>
> What you'd actually want to pass implicitly is a local __SCOPE__, not a global
> __MODULE__ scope.
>
> Timon

__MODULE__ requires minimal change because a module symbol is 
well-supported. __SCOPE__ needs much more work. As a short-term 
solution, __MODULE__ is more practical to implement first than __SCOPE__.


More information about the Digitalmars-d mailing list