lynx   »   [go: up one dir, main page]

タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

Yコンビネータに関するhitacのブックマーク (3)

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

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

  • 時間城年代記:PythonによるYコンビネータの仕組みの(多分)わかりやすい説明

    lambdaを使っててどうも気になるのが、ループ(再帰)するために一時的に関数に名前をつけなければならないところだ。 一時的なローカル変数が簡単に設定できる言語ならともかく、Pythonではそれも結構面倒だ。 ところが、つらつらとネットを探していくと、妙なモノを発見。 『Yコンビネータ(Y combinator)』とか『不動点コンビネータ (fixed point combinator)』あるいは『不動点演算子』とか呼ばれるモノで、コレを使うと、どうやら関数に名前を付けなくとも再帰できるという代物らしい。 喜びいさんで見てみたが……書けはしたものの、理解するのに苦労した。 今回はその解説を、私のようにλ表記になじみの無い人でもわかるように、基的に一般の関数式とPython式で書いてみることにした。 さらに、同じ式を2回書いて、次にドコにドコを適用させるかを色分けし、その結果も色分けして書

  • おとうさん、ぼくにもYコンビネータがわかりましたよ! - 2009-04-09 - きしだのはてな

    やっと、Yコンビネータが何を意味するものなのか、どういう意義があるのかがわかりました。 名前を使わず再帰ができますよ!というだけのものじゃなかったのですね。 まずλありき 関数の話をしたいのです。 そのとき、いちいち hoge(x) = x * 2 としてhogeを・・・、とか名前をつけて話を進めるのがめんどうなので、関数を値としてあらわすと便利ということで、λという値を定義するのです。 そうすると、上のhoge関数なんかはλ(x)(x*2)などとあらわせますが、引数をあらわすのに()を使うといろいろまぎらわしいので、 λx.x*2 のように表記します。 というのがλ。 このとき、λになにかわたされたら、引数としてあらわされる部分を単純におきかえます。 (λx.x*2)y とあったら、xの部分をyでおきかえて (λx.x*2)y → y * 2 となります。λの引数部分を与えられた引数で置

    おとうさん、ぼくにもYコンビネータがわかりましたよ! - 2009-04-09 - きしだのはてな
  • 1
Лучший частный хостинг