タグ

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

  • RubyでYコンビネーターとZコンビネーター - Qiita

    あいさつ 計算機による一階述語論理の決定不能の取り扱い方を調べる中で コンビネーター理論の理解が深まったので筆を取る事にした. このたぐいのテクを用いると、識別子に依らない関数の再帰を定義出来る(!!) # Zコンビネーター Z = ->(f) { ->(x){ f.( ->(y) {x.(x).(y)} ) }.( ->(x){ f.( ->(y) {x.(x).(y)} ) } ) } # 識別子に依らずに階乗を定義! Z.(->(_){ ->(n){ n == 0 ? 1 : n * _.(n-1) } }).(5) # => 120 以下説明 自分の理解度の確認のためにも用語を1つ1つ丁寧に積み重ねて分かりやすくしたつもり. λ式とは λ式なんていかがわしい言葉を使っているがメチャ簡単な事、でも実は難しい. 皆さんおなじみ2次関数

    RubyでYコンビネーターとZコンビネーター - Qiita
  • Yコンビネータのお話 - 風と宇宙とプログラム

    過去にもいろいろなブログで何度も取り上げられて話題になりましたが、自分なりの理解で書いてみました。Yコンビネータはシンプルでありながら、不思議で奥が深いので興味をそそる要素があるのでしょう。 JavaScriptも広い意味では関数型言語であり、λ計算とほぼ同等のものが表現できます。λ計算による再帰的関数定義で登場するYコンビネータのJavaScriptでの実装について簡単にメモしておきます。 唐突ですが、JavaScriptで再帰的階乗計算factは以下のように定義されます。 function fact(n) { return n == 0 ? 1 : n * fact(n - 1); } 関数オブジェクトを陽にあらわすと、これは var fact = function (n) { return n === 0 ? 1 : n * fact(n - 1); }; とほぼ同等です。しかし、関

    Yコンビネータのお話 - 風と宇宙とプログラム
  • 404 Blog Not Found:TuringとChurchの狭間で

    2006年04月16日13:53 カテゴリMath書評/画評/品評 TuringとChurchの狭間で The Emperor's New Mind Roger Penrose [邦訳:皇帝の新しい心] なんでひげぽんが反復がすぐにわからなかったかを憶測すると、「変数とは代入すべきもの」、という手続き型言語の呪縛が思い立つ。ひげぽんは別にがっかりする必要はない。hyukiさんさえそれに引っかかっていたんだから。 その証拠を、以下にお見せする。 [結]2005年8月 - www.textfile.org sub fix { my $G = shift; return $G->( sub { my $x = shift; return fix($G)->($x); } ); } これはPerlで実装した不動点関数で、全く問題なく動く。しかし、hyukiさんも知らぬ間に一つ「反則」を犯しているこ

    404 Blog Not Found:TuringとChurchの狭間で
  • d.y.d. memo: POPL 2

    17:17 08/01/30 ところで C++JavaScriptPHP が批判されてるのを見ると思わず何か言いたくなってしまうのだけど、 考えてみるに、他の言語だと割とどうでもいい。そういう意味では、今の自分が好きなプログラミング言語は この3つということになるのかなあ……などと徒然なるままに思いました。 単純に、つきあいが長い方から3つというだけかもしれない。 いやしかし、PHPに対する批判の多くはその通りであるとは思うのですが。 Attacking PHP で触れられてる「リストであり辞書でもある」 array ってあれは普通に便利じゃないです? 結構他の言語でも欲しくなるのですが。 17:08 08/01/29 PHP で Yコンビネータ PHP じゃ Y コンビネータつくれない と聞いて。 <?php // PHPでは関数呼び出しは 関数名(...) か 変数(...

    polynity
    polynity 2008/02/04
    PHPでYコンビネータ。
  • Y コンビネータって何? - IT戦記

    このエントリの 親友へ。ブログを書こう。 - IT戦記 y がブログを始めたみたいなので、読んでみた。 で、最新のエントリを読んでみたら、 Y コンビネータというものについて書いてあったので、 Y Combinatorが凄すぎる! - yuji1982の日記 Y コンビネータって何ってところから、自分でもいろいろ考えてみた。 結局なんなのかさっぱり分からなかったんですが、自分が考えたことをまとめておく まず、フィボナッチ数を求める fib を定義する var fib = function(n){ return (n <= 2) ? 1 : (arguments.callee(n-1) + arguments.callee(n-2)); }; fib(10); おお! JS すげー!名前は n しか使ってねーよ! めでたし、めでたし。。。。じゃなくて! JS が素晴らし過ぎて話が終わってしま

    Y コンビネータって何? - IT戦記
  • Y Combinatorが凄すぎる! - yuji1982の日記

    って言いたかったけど、難しくて理解できません>< ラムダの話をしてたら会社の人が、Recursive lambda expressions – The Mellow Musings of Dr. Tの説明をしてくれました。 去年の秋にブクマで見たときは難しそうだからスルーしたけど、、今回は理解しようと頑張って見てみます。 やっぱり理解はできないorz でも、ここで諦めたら負けなので、とりあえず触ってみました。 昔、書いてみたフィボナッチ数列で試してみる public static void Main() { foreach (var item in Math.Fib(10)) Console.WriteLine(item); } static public class Math { static public IEnumerable<int> Fib(int count) { Func<i

    Y Combinatorが凄すぎる! - yuji1982の日記
  • 平々毎々 (Hey hey, My my) | C#でYコンビネータ

    Yコンビネータっておもしろいなあ。ブログのねたにはちょうどいいかも。 static Func<T, T> Fix<T>(Func<Func<T, T>, Func<T, T>> F) { return t => F(Fix(F))(t); } で、こうなりました。 static public IEnumerable<int> Fib(int count) { foreach (int ii in Enumerable.Range(0, count)) yield return Fix((Func<Func<int, int>, Func<int, int>>) (ff => i => ((i これすっっげぇ・・(゜゜ で、でも使い方あってんのかわかんない; Y Combinatorが凄すぎる! - yuji1982の日記(改行を足しました) これは yie

  • 1