string reverse(string str) pure nothrow
{
string reverse_impl(string temp, string str) pure nothrow
{
if (str.length == 0)
{
return temp;
}
else
{
return reverse_impl(str[0] ~ temp, str[1..$]);
}
}
return reverse_impl("", str);
}
私の知る限り、このコードはにテールコール最適化の対象にする必要がありますが、DMDが行うかどうかはわかりません。どのDコンパイラがテールコール最適化をサポートしていますか?この関数でテールコール最適化を実行するDコンパイラはどれですか?
GDCは特定の状況でテールコールの最適化を行うのは確かですが、この特定のケースでは私が使用していたGDCのバージョンでもまっすぐな再帰呼び出しが生成されます。 –
GDC 5.2.0を使用しました。 –
LDC 1.1.0はこの例で正しいことをしました。 –