[Issue 1541] std.bind is broken?
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Thu Oct 4 04:02:23 PDT 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1541
------- Comment #2 from rayerd.wiz at gmail.com 2007-10-04 06:02 -------
Created an attachment (id=188)
--> (http://d.puremagic.com/issues/attachment.cgi?id=188&action=view)
For std.bind in dmd2.004
Hi.
I am Haruki Shigemori.
Because I fixed std.bind for dmd2.004, please apply this patch to bind.d!
=========================================
I:\D\projects\bind>type main.d
import std.stdio, std.bind;
void main()
{
writefln("-less (bind)");
bool less(int a, int b){return a<b;}
auto less5 = bind(&less, _0, 5);
foreach (i; 0..7)
{
writefln(i, "<5 ", less5(i));
}
writefln("-greater (bind)");
auto greater = bind(&less, _1, _0);
auto greater3 = bind(greater.ptr, _0, 3);
foreach (i; 0..7)
{
writefln(i, ">3 ", greater3(i));
}
writefln("-less (bindAlias)");
auto less2 = bindAlias!(less)(_0, 2);
foreach (i; 0..7)
{
writefln(i, "<2 ", less2(i));
}
writefln("-greater (bindAlias)");
auto greater4 = bindAlias!(greater)(_0, 4);
foreach (i; 0..7)
{
writefln(i, ">4 ", greater4(i));
}
writefln("-function composition");
int foo(int i) {return i*2;}
int bar(int i) {return i*3;}
auto fooBar = bind(&foo, bind(&bar, _0));
writefln(fooBar(5));
}
I:\D\projects\bind>dmd main
C:\D\dmd\bin\..\..\dm\bin\link.exe main,,,user32+kernel32/noi;
I:\D\projects\bind>main
-less (bind)
0<5 true
1<5 true
2<5 true
3<5 true
4<5 true
5<5 false
6<5 false
-greater (bind)
0>3 false
1>3 false
2>3 false
3>3 false
4>3 true
5>3 true
6>3 true
-less (bindAlias)
0<2 true
1<2 true
2<2 false
3<2 false
4<2 false
5<2 false
6<2 false
-greater (bindAlias)
0>4 false
1>4 false
2>4 false
3>4 false
4>4 false
5>4 true
6>4 true
-function composition
30
--
More information about the Digitalmars-d-bugs
mailing list