On Tue, 06 Mar 2012 13:32:37 -0600, Jose Armando Garcia
<jsan...@gmail.com> wrote:
On Mon, Mar 5, 2012 at 5:30 PM, Steven Schveighoffer
<schvei...@yahoo.com> wrote:
On Mon, 05 Mar 2012 20:22:05 -0500, so <s...@so.so> wrote:
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;
Except 'info', 'error', 'warning' are all common names, likely to be a
very
attractive name for something that has nothing to do with (or cares
about)
logging. cout is not a common name or even an english word, so it's
unlikely someone has or wants to create a cout member.
Actually, I see this more as argument as to why cout is a horrible
name for a symbol in std.stdio. I suspect that the only reason that it
is there is to keep C developer migrating to D happy. It should
probably just be "out" like Java (System.out) and C# (Console.Out).
D doesn't have a cout, in stdio or elsewhere.