タグ

combinatorに関するkiyo_hikoのブックマーク (5)

  • SKIコンビネータ計算 - Wikipedia

    SKIコンビネータ計算は型無しラムダ計算を単純化した、ひとつの計算モデルである。このモデルは、ある種のプログラミング言語と考えることができるが、人間によるソースコードの記述には適さない(難解プログラミング言語には時折採用される)。その代わり、このモデルは非常に単純なチューリング完全な言語であるため、アルゴリズムの数学理論においては重要である。また関数型言語を実行する抽象機械のモデルとして使っている例もある[1]。 ラムダ計算におけるあらゆる演算は、SKIにおいて3つの定数記号S, KおよびI(これらをコンビネータと呼ぶ)および変数記号によって表現できる。2引数の関数適用演算のみを持つ形式言語の構文木と考えれば、定数記号と変数記号を葉とする二分木と捉えることもできる。 実際には、 I はモデルを簡単にするために導入されたものであり、SKIシステムを展開するにはSとKの2つで十分である。 非形

    kiyo_hiko
    kiyo_hiko 2013/08/01
    S=λxyz.xz(yz)、K=λxy.x、I=λx.x…またIは構文糖
  • ラムダ計算入門

    Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...

    ラムダ計算入門
  • 翻訳:コンビネータ論理チュートリアル

    このページは、Combinatory Logic Tutorialの翻訳です。 http://homepages.nyu.edu/~cb125/Lambda/ski.html的に超訳です。 訳の正しさは全く保証されません。 訳のおかしい部分は多数あります。 翻訳元サイトの許可を取ったりはしていません。 無認可です。 訳者による前書きと感想コンビネータ論理チュートリアル 訳者による前書きと感想 訳してみたものの、ちょっと、たったこれだけの説明では、はじめてコンビネータ論理を知った人が読んで充分に理解できるとは思えない。 どうも、この文書は、原文の上位ディレクトリにあるLambda tutorialを読んだ後に読むべきものっぽいようだ。 しかし、流石にこっちまで訳す気力は無い。 そういう訳で、これだけを読むよりは、Unlambdaのチュートリアルを読んだ方がずっと、コンビネータ論理を理解

  • SKIコンビネータを使ってチャーチ数の2を表せない程度の能力の私がLazy Kを紹介して周りの人間にも嗜んでもらいたいエントリー - デ-mk6

    チャーチ数そのものが何たるかは分かった気がするが、それをSとKで表せない。私にもっとコンビネータを! とか垂れ流すだけでは何だかさびしくなってきたので、ここを読んでる私の知り合いもしくは自分の理解の確認にも発信してみる。Unlambdaはパッと見でウゲッてなるだろうからLazy Kで。まぁどっちも変わらんが。 あといつものように正確性は疑わしい。 公式を翻訳したサイト wikipediaの解説 以下は上に書いてあることの繰り返し。Lazy Kはプログラミング言語。3つの組み込み関数があり、それ以外は存在しないし、新しい名前の関数を作ることもできない。あと関数以外の何者も存在しない。で、その3つの関数というのがKとSとIで、それぞれJavaScript的に書いてみると、 function K(x) {return function(y) {return x;};} function S(x)

    SKIコンビネータを使ってチャーチ数の2を表せない程度の能力の私がLazy Kを紹介して周りの人間にも嗜んでもらいたいエントリー - デ-mk6
    kiyo_hiko
    kiyo_hiko 2011/10/19
    SKIのJS風味。
  • Y Combinator - LoveRubyNet

    $Id: ycombinator.html,v 1.6 2002/06/27 23:37:39 aamine Exp $ [ruby-list:35058] に刺激を受けて Y combinator を解読してみた。 こんなもん読むくらいなら以下の参考ページを読んだほうがいい。 参考にした (というかほとんどそのままな) ページ (英語) http://www.ececs.uc.edu/~franco/C511/html/Scheme/ycomb.html 動機 再帰関数は再帰するときに自分自身を名前で呼ぶのが普通である。 これをなんとかして名前を使わず、関数そのものを呼ぶように させたい。 求めかた まず単純な fact (階乗) を以下に示す。言語は Scheme である。 (define fact (lambda (n) (if (zero? n) 1 (* n (fact (- n

    kiyo_hiko
    kiyo_hiko 2010/07/17
    参考にさせて頂く
  • 1