パスワードを忘れた? アカウント作成
1525897 journal
プログラミング

Yoh2の日記: 続・D言語で不動点コンビネータ

日記 by Yoh2

先日の日記にて、D言語で不動点コンビネータを書いてみたら分かりにくくなったと述べたが、実はこれだけで実現できることに気付いた。

R delegate(TS) fix(R, TS...)(R delegate(R delegate(TS), TS) f)
{
    return delegate(TS xs){ return f(fix(f), xs); };
}

ラムダ式をサポートしている版ならこう。

R delegate(TS) fix(R, TS...)(R delegate(R delegate(TS), TS) f)
{
    return (TS xs) => f(fix(f), xs);
}

あらやだ分かり易い。
前回の日記のコードはYコンビネータを実装したものだったが、そんなことしなくても、単純に不動点の定義を書き下すだけで済んでしまうわけで。

あ、でも、無名関数の再帰を実現するコードで自らの名前を使ってしまう (fixの定義中でfixを使う) のは反則気味かな?

typodupeerror

Stableって古いって意味だっけ? -- Debian初級

読み込み中...