[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