| Thread overview |
|---|
March 04, 2007 extreme curring (proposal) | ||||
|---|---|---|---|---|
| ||||
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 ?
| ||||
March 04, 2007 Re: extreme curring (proposal) | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Thorsten | 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 | |||
March 04, 2007 Re: extreme curring (proposal) | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Tom S | Tom S Wrote:
> 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
Yea OK, that seems much more powerful than my approach. Thanks !!
| |||
March 04, 2007 Re: extreme curring (proposal) | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Tom S | Tom S Wrote: > 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 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. | |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply