D言語 Part24
■ このスレッドは過去ログ倉庫に格納されています
0812デフォルトの名無しさん
2010/07/14(水) 03:19:36>>809 の compose は template なのでそういうのは無理でしょうね。
>>810 のように書くとしたら、
T delegate(T) twice(T)(T delegate(T) f){
return (T x){ return f(f(x)); };
}
void main(){
int func(int x) { return x*2; }
auto tf = twice(&func);
auto ttf = twice( twice(&func) );
assert( tf(1) == 4 );
assert( ttf(1) == 16 );
}
こんなのはいかがでしょうか?
func がデリゲートじゃないといけないのがヤルセないですが、これはそのうち改善されるらしいです。
ちなみに 809 で使った std.functional.compose でも、
alias compose!(func,func,func,func) ttf;
で関数4回適用できます。
■ このスレッドは過去ログ倉庫に格納されています