タグ

Y Combinatorに関するhamatsu1974のブックマーク (3)

  • さあ、Yコンビネータ(不動点演算子)を使おう! - よくわかりません

    前回、おとうさんにもわかるYコンビネータ!(絵解き解説編) - よくわかりませんというエントリで、Yコンビネータ(不動点演算子)と再帰の絵解き解説をしました。 Yコンビネータ自身は、結局のところ再帰を産み出してくれるだけです。関数(正確にはλという単純な文字列変換ルール)だけで出来て、プログラミングに関するいろんな原理の研究を可能にするのが凄い訳です。その辺のさわりを、きしださんが解説されています。しかし、単なる再帰なら、実際のプログラミングではYコンビネータなんて使わなくても出来ます。 じゃあ、Yコンビネータとか不動点とかは、偉い学者さんとかが研究に使えばいいもので、普通のプログラマには何の意味もないモノなのでしょうか? というわけで、今回はポジティブに、Yコンビネータや不動点で出てくる考え方を、理論だけじゃなく、実際のプログラミングに応用する例を見てみましょう。 今回、プログラムの例を

  • おとうさんにもわかるYコンビネータ!(絵解き解説編) - よくわかりません

    先日YコンビネータのきしださんのYコンビネータのエントリが話題になっていました。 ずいぶん日にちが経ってしまいましたが、自分も、自分なりにYコンビネータのあたりを絵解きで整理してみたいと思います。きしださんのエントリタイトル*1に引っ掛けて、目標として、自分の父親(非プログラマ。その辺のおっさん)でも解る内容を目指します。 なぜ不動点演算子というのか、不動点だったらなぜ再帰なのか、この辺りも含めて、実感を持って納得できればいいなと思います。 きしださんのエントリのおさらい 題の前に、きしださんのエントリをおさらいしておきます。 Yコンビネータはただのオモチャじゃないんだよ 関数だけで色んな事が出来る 条件分岐をする関数ってのもある。 再帰(ループ)を作れる関数もある。←これがYコンビネータ。 数値も関数で表現できる。 つまり、関数だけで、条件分岐も、再帰(ループ)も、数値も作れちゃう!!

    おとうさんにもわかるYコンビネータ!(絵解き解説編) - よくわかりません
  • 【Scheme】Y-Combinator(Yコンビネータ/不動点演算子)

    【Scheme】Y-Combinator(Yコンビネータ/不動点演算子) ■Y-Combinator 「Y-Combinator」を理解するために書いたコードを元に、思考の過程を書く。 ■参考 記事最下に記載。 ■材料 再帰を伴う処理を基に書いていく。 通例通り階乗(http://ja.wikipedia.org/wiki/階乗)を求める「fact」関数を例に取る。 ■その前に・・・ Y-Combinatorは何がしたいのか? ・無名(匿名)関数で再帰を行いたい。 ⇒ 普通は「fact」関数の定義の中で「fact」呼び出しが行われる。 ⇒ 「fact」という名前を使わずに再帰したい。 ■注 1)、「;」で始まるコメントは出鱈目な英語です。(DrScheme(http://www.db.is.kyushu-u.ac.jp/enshu/)の日語表示が気持ち悪いから) 2)、「;=>」は実行結

    【Scheme】Y-Combinator(Yコンビネータ/不動点演算子)
  • 1