digitalmars.D.bugs - [Issue 6942] New: lazy parameters can break purity
- d-bugmail puremagic.com (26/26) Nov 13 2011 http://d.puremagic.com/issues/show_bug.cgi?id=6942
- d-bugmail puremagic.com (14/14) Nov 13 2011 http://d.puremagic.com/issues/show_bug.cgi?id=6942
- d-bugmail puremagic.com (16/16) Dec 02 2011 http://d.puremagic.com/issues/show_bug.cgi?id=6942
http://d.puremagic.com/issues/show_bug.cgi?id=6942
Summary: lazy parameters can break purity
Product: D
Version: D2
Platform: All
OS/Version: All
Status: NEW
Keywords: accepts-invalid
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody puremagic.com
ReportedBy: timon.gehr gmx.ch
int foo(lazy int x) pure{
return x()+x();
}
void main(){
auto a=foo((writeln("impure"),1));
}
This compiles and prints
impure
impure
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 13 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6942
note that
int foo(int delegate() x) pure{
return x()+x();
}
void main(){
auto a=foo({return writeln("impure"),1;});
}
fails with
Error: pure function 'foo' cannot call impure delegate 'x'
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 13 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6942
Kenji Hara <k.hara.pg gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |INVALID
The pureness of lazy parameter belongs to the *caller side*, not callee side.
It is a design.
One use case is std.exception.enforce. It receives a condition as a lazy
parameter, but whole enforce function can become pure with the design.
Delegate parameter is similar to lazy parameter, but it is different in this
point.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Dec 02 2011









d-bugmail puremagic.com 