Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

lambdaに関するbull2のブックマーク (6)

  • おとうさん、ぼくにも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 - きしだのはてな
  • ラムダ計算でハマる - imHo

    チャーチ数は、関数 f を x に何回適用したか、で数を表すらしい。まずは0から、 zero = λf.λx. x 1進めた数は succ で得られる succ = λn.λf.λx. f (n f x) 2つの数 m、n の足し算は、初期値 m にさらに n 回 f を適用すれば得られる plus = λm.λn.λf.λx. n f (m f x) 掛け算は、m の加算を n 回行う、ってことかな? mult = λm.λn.λf.λx. n (m f) x ここまではなんとなくわかったんだけど、指数がどうして次のようになるのかわからない: exp = λm.λn. n m 手で展開してみる: exp 3 2 2 = λf.λx. f (f x) 3 = λf.λx. f (f (f x)) exp 3 2 = (λm.λn.λf.λx. n m f x) 3 2 = (λf.λx.

    ラムダ計算でハマる - imHo
  • 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戦記
  • 俺様言語 Lazy を作る。番外編。Yコンビネータ。 - 言語ゲーム

    Y コンビネータとは何か? あなたはどんな言葉でも使う事が出来ます。しかし、知らない言葉を使う時は、今まで知っている言葉で説明できなくてはなりません。 例えば、「カニ」と「コロッケ」と「クリーム」だけを知っている時、あなたは「カニクリームコロッケ」について語る事が出来ます。「『カニクリームコロッケ』とは、『カニ』の味のする『クリーム』の入った『コロッケ』である。」しかし、「かぼちゃコロッケ」については語る事は出来ません。なぜなら「かぼちゃ」について何も知らないからです。 さてここで問題。「皮」や「剥いだ物」について知っている時、次の説明は適当でしょうか?「『タマネギ』とは、『タマネギ』の『皮』を剥いた物である。」私たちは、タマネギの皮を剥いてもタマネギである事を知っています。しかし、タマネギを説明するのにタマネギを話題に出しても良いものでしょうか?インチキ臭い感じがしませんか?こういうのを

    俺様言語 Lazy を作る。番外編。Yコンビネータ。 - 言語ゲーム
    bull2
    bull2 2007/10/23
    Y
  • 絵を描いて学ぶ・プログラマのためのラムダ計算 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    JavaScriptで学ぶ・プログラマのためのラムダ計算」は、1回では述べ切らなくて、一段落付いたところで区切りました。これはかえって良かったですね、ブックマークやトラックバックでフィードバックが得られたので。 そのフィードバックなどをかんがみて、「残り=次回の話題」として予告した内容とはい違ってしまうのだけど、今回は、文章では伝わりにくい(前回うまく伝わらなかったと思える)ラムダ計算の大事なツボを、なんとか表現してみようと思います。 [このエントリーの内容はだいぶ前にほぼ出来上がっていたのだけど、ココに書いてある事情で、“お絵描き”がなかなか出来なかったのです。] ※印刷のときはサイドバーが消えます。 内容: 知っていて損はない 計算は身体的に理解しよう ラムダ項のツリー表示:準備 ラムダ項のツリー表示:描く! β変換に対応するツリーの描き換え もっとβ変換をやってみよう 計算現象を

    絵を描いて学ぶ・プログラマのためのラムダ計算 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    bull2
    bull2 2007/02/20
    ラムダ計算の図示。SICPを読んだ方が良いような気がしてきた。
  • 1