digitalmars.D - extreme curring (proposal)
- Thorsten (23/23) Mar 03 2007 Hi, at the moment it is not possible, but it wold be nice to have in the...
Hi, at the moment it is not possible, but it wold be nice to have in the future. (But maybe not very necessary) R delegate(U) Curry1(R,X...,U...)(R delegate(X,U) dg,X args) { struct Foo { typeof(dg) dg_m; X args_m; R bar(U xs) { return dg_m(args_m,xs); } } Foo* f = new Foo; f.dg_m = dg; foreach (i, arg; args) f.args_m[i] = arg; return &f.bar; } I know that "double variadic template arguments" are not possible with the current version, right ?
Mar 03 2007
Thorsten wrote:Hi, at the moment it is not possible, but it wold be nice to have in the future. (But maybe not very necessary) R delegate(U) Curry1(R,X...,U...)(R delegate(X,U) dg,X args) { struct Foo { typeof(dg) dg_m; X args_m; R bar(U xs) { return dg_m(args_m,xs); } } Foo* f = new Foo; f.dg_m = dg; foreach (i, arg; args) f.args_m[i] = arg; return &f.bar; } I know that "double variadic template arguments" are not possible with the current version, right ?You could try std.bind : http://digitalmars.com/d/phobos/std_bind.html Examples in the independent package: http://www-users.mat.uni.torun.pl/~h3r3tic/bind2.zip -- Tomasz Stachowiak
Mar 03 2007
Tom S Wrote:Thorsten wrote:Yea OK, that seems much more powerful than my approach. Thanks !!Hi, at the moment it is not possible, but it wold be nice to have in the future. (But maybe not very necessary) R delegate(U) Curry1(R,X...,U...)(R delegate(X,U) dg,X args) { struct Foo { typeof(dg) dg_m; X args_m; R bar(U xs) { return dg_m(args_m,xs); } } Foo* f = new Foo; f.dg_m = dg; foreach (i, arg; args) f.args_m[i] = arg; return &f.bar; } I know that "double variadic template arguments" are not possible with the current version, right ?You could try std.bind : http://digitalmars.com/d/phobos/std_bind.html Examples in the independent package: http://www-users.mat.uni.torun.pl/~h3r3tic/bind2.zip -- Tomasz Stachowiak
Mar 03 2007
Tom S Wrote:Thorsten wrote:By the way there is an error on the http://digitalmars.com/d/phobos/phobos.html web page. Because when you click an std.bind, you are sent to http://digitalmars.com/d/phobos/std_bind, which is not available.Hi, at the moment it is not possible, but it wold be nice to have in the future. (But maybe not very necessary) R delegate(U) Curry1(R,X...,U...)(R delegate(X,U) dg,X args) { struct Foo { typeof(dg) dg_m; X args_m; R bar(U xs) { return dg_m(args_m,xs); } } Foo* f = new Foo; f.dg_m = dg; foreach (i, arg; args) f.args_m[i] = arg; return &f.bar; } I know that "double variadic template arguments" are not possible with the current version, right ?You could try std.bind : http://digitalmars.com/d/phobos/std_bind.html Examples in the independent package: http://www-users.mat.uni.torun.pl/~h3r3tic/bind2.zip -- Tomasz Stachowiak
Mar 03 2007