On Monday, 5 March 2012 at 23:51:29 UTC, Steven Schveighoffer wrote:
On Mon, 05 Mar 2012 18:30:03 -0500, David Nadlinger <s...@klickverbot.at> wrote:

On Monday, 5 March 2012 at 21:55:08 UTC, Steven Schveighoffer wrote:
The log aliases use names that are too common. I think log.info is a better symbol for logging than just 'info', which could be a symbol in a myriad of places. Given that D's symbol lookup rules allow shadowing of global symbols, this does not work out very well.

Originally, the code used log!info and so on, but it was changed to the current design right after review begin, the rationale being that you could always use »import log = std.log« if you want the extra namespace.

That doesn't help.  Software isn't static.

import std.log;
import other; // defines B

class A : B
{
   void foo()
   {
      info("some info message"); // error! int isn't a function!
   }
}

other.d:

class B
{
   int info; // added later
}

That is not a counter-argument to something related to this library but everything that lies in global namespace. At its first state both severity levels and the "log" was in global namespace. Now only severity levels.

You are also overlooking one crucial fact that this library will be part of phobos, standard library. Which requires everyone to adopt. When you see codes like this (below), you don't blame standard library designers do you?

using namespace std;
int cout;

Reply via email to