Why is to(T) pure but roundTo(T) impure?
Chris Saunders
sencha at gmail.com
Sat Jun 9 11:43:42 PDT 2012
Hi --
I've been trying to learn more about D's purity features after
reading David Nadlinger's interesting post on this topic. While
'purifying' some existing code I discovered that I can't use
roundTo in a pure function, and I don't understand why. Is this a
general problem with most floating-point library calls? (e.g. I
noticed std.math.floor() is impure as well).
"""
import std.conv;
int func(double d) pure { // compiles...
return to!int(d);
}
int func2(double d) pure { //doesn't compile!?!
return roundTo!int(d);
}
"""
Thanks for any pointers!
-Chris
More information about the Digitalmars-d-learn
mailing list