[phobos] Pureness of enforce()
Lars Tandle Kyllingstad
lars at kyllingen.net
Tue Nov 9 03:21:38 PST 2010
enforce(x) is basically a substitute for
if (x) throw new Exception;
which doesn't violate the purity rules. It is not possible to annotate
enforce() with 'pure', however, because it takes a lazy parameter, which
is just shorthand for a (possibly impure) delegate.
enforce() is used virtually everywhere in Phobos, and this means that a
lot of functions that could otherwise be marked as pure, currently
can't.
One example is std.conv.to(), which should definitely be pure. (In
fact, I tried marking it as such, which is what got me thinking about
this in the first place.)
What to do?
-Lars
More information about the phobos
mailing list