タグ

ブックマーク / oto-oto-oto.hatenablog.com (4)

  • あおむけマカロニ - oto-oto-oto’s diary

    えらく時間がたってしまったが、1月24日、「技術者/プログラマのためのラムダ計算、論理、圏」セミナーに行ってきた。 で、自分なりにわかったこと、わからなかったことをメモしてみる。 ウソ、間違いがあるはずなので、ご指摘いただけると大変ありがたいです。 関数 関数 ブラックボックス、抽象的な「存在」 ラムダ式 関数の実装(の詳細)=ソースコード、具体的な「存在」 E ラムダ式のコンパイラ? インタプリタ? ラムダ式(と実引数)を放り込んだら、抽象的な存在であるところの関数と同じように働きだすもの。 というイメージを持った。 f^という書きかた f(x, y) <-> E(f^(x), y)という対応で、f^の定義とする。実にいい加減な理解だ。<->は上に書いた「同じように働きだす」の意味で。やかましく言わないならイコールと思っていいのかもしれない。 これを見ると、f^はfと第一引数をまとめてコ

    あおむけマカロニ - oto-oto-oto’s diary
    sshi
    sshi 2009/01/31
  • 不動点演算子 - oto-oto-oto’s diary

    昨日のYコンビネータを考えてるときに気がついたことをメモ。 準備として、不動点演算子とは、任意の関数fに対して Y(f) == f(Y(f))を満たすYのこと*1。 昨日の最後のコード y = lambda{|q| p = lambda{|f| lambda{|n| f[f][n] } } g = lambda{|u| lambda{|v| q[u[u]][v] } } p[g] } h = lambda{|slf| lambda{|m| if m == 0 1 else m * slf[m-1] end } } fact = y[h] p fact[10]で、hの型を考えてみた。型付けの表現はHaskell風の擬似コードで。 h :: (Int -> Int) -> Int -> Intカリー化されてるのでhは、『(整数→整数)な関数を受け取って、(整数→整数)な関数を返す関数』となる。

    不動点演算子 - oto-oto-oto’s diary
    sshi
    sshi 2006/10/13
  • 無名再帰関数 - oto-oto-oto’s diary

    再帰を無名のままやりたい。 … 無名の自分をどうやって呼ぶんだ? 名前を付けてやればいい。 無名で名前が付けられるのはというと、仮引数しかない。 何かの関数の実引数としてわたしてやればいいんじゃない? こんな感じ def nanika(f) f # あれ? end引数としてfが渡されてきたということは、fは定義済みでブラックボックス。 fの定義をしたいのに。 … fにブロックを渡せるようにしておけばいいんじゃない? で、fの定義でブロックを呼び出す。 つまり、fの定義(の一部)を実行時まで遅らせる、実行時に決定できるようにしておく。 def f(self, x) ... self(self, x-1) ... endこんな感じ。仮引数のselfは、自分自身(f)が入ってくる予定だよ〜という気持ち。 そしたら、nanikaの中では def nanika(f, x) f(f, x) endとし

    無名再帰関数 - oto-oto-oto’s diary
    sshi
    sshi 2006/10/07
    これってYコンビネータ?
  • モナドの例がパイプそのまんま - oto-oto-oto’s diary

    ふつけるのMaybeモナドの例*1とUnixパイプが同じ形だなという発見。 lookup "database" config >>= lookup "encoding" -- Maybeモナドの例 grep "database" config | grep "encoding" -- Unix系のコマンドラインでgrepをパイプでつないだもの">>="と"|"がそのまま対応している。下手したらモナドをパイプとして理解しそうで怖い。 その次のページの例は、returnをつかって上と同じことをしている。これもコマンドラインに対応物が。 return config >>= lookup "database" >>= lookup "encoding" cat config | grep "database" | grep "encoding""return"と"cat"が対応している。 Hask

    モナドの例がパイプそのまんま - oto-oto-oto’s diary
    sshi
    sshi 2006/09/10
  • 1