Thread overview
[Issue 7438] New: Functions from std.conv should be pure
Apr 19, 2012
SomeDude
Apr 19, 2012
Jonathan M Davis
Aug 12, 2013
Robert Schadek
Aug 14, 2013
Jonathan M Davis
Aug 14, 2013
Robert Schadek
February 04, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7438

           Summary: Functions from std.conv should be pure
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: trivial
          Priority: P2
         Component: Phobos
        AssignedTo: nobody@puremagic.com
        ReportedBy: SyntaxColoring@gmail.com


--- Comment #0 from SyntaxColoring@gmail.com 2012-02-04 12:55:56 PST ---
The conversion functions in std.conv always yield the same results for the same input, so they should be marked as pure.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
April 19, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7438


SomeDude <lovelydear@mailmetrash.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |lovelydear@mailmetrash.com


--- Comment #2 from SomeDude <lovelydear@mailmetrash.com> 2012-04-19 08:46:04 PDT ---
Should we close ?

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
April 19, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7438


bearophile_hugs@eml.cc changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bearophile_hugs@eml.cc


--- Comment #3 from bearophile_hugs@eml.cc 2012-04-19 15:02:53 PDT ---
(In reply to comment #2)
> Should we close ?

I agree with Jonathan M Davis that maybe asking for them to be always pure is a bit too much (this is debatable. Maybe it's a good thing still).

But I think we can't close this bug report before this little program, that shows a very basic usage of to!(), compiles with no errors or warnings:


import std.conv: to;
void main() pure {
    string r = to!string(to!real("2.5"));
}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
April 19, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7438



--- Comment #4 from Jonathan M Davis <jmdavisProg@gmx.com> 2012-04-19 15:11:15 PDT ---
I'd be very tempted to argue that that should be a separate bug. There's a big difference between std.conv.to should always be pure for everything and std.conv.to should be pure when converting to strings.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
August 12, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=7438


Robert Schadek <rburners@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rburners@gmail.com


--- Comment #5 from Robert Schadek <rburners@gmail.com> 2013-08-12 13:16:56 PDT ---
Is somebody working on this?
I would even argue that it should be @safe.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
August 14, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=7438



--- Comment #6 from Jonathan M Davis <jmdavisProg@gmx.com> 2013-08-13 19:47:19 PDT ---
Whether std.conv.to can be @safe or pure depends entirely on what you're converting. For all of the built-in types, it should be @safe and pure, but once user-defined types enter the mix, it depends on how the user-defined types are defined. A lot of the underlying stuff which relates to arrays (like appender) hasn't been able to be pure in the past (I don't know quite where that sits now though), making it so that stuff like std.conv.to!string(10) hasn't been able to be pure even though it should be. So, odds are that the lack of purity or @safety in std.conv.to isn't std.conv.to's fault at all.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
August 14, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=7438



--- Comment #7 from Robert Schadek <rburners@gmail.com> 2013-08-14 00:35:16 PDT ---
yes it turtles down. Just to see how hard it breaks I mark some pure. I stopped somewhere in format. So looks like not so much fun.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------