[#34988] BigFloat の to_i メソッドについて — Sako Hiroshi <sakoh@...2.so-net.ne.jp>
[#34989] mailing list archive? — maili31s@... (SugHimsi == SUGIHARA Hiroshi)
すぎむし。
[#34991] a = 4 ; p((a < 3) or (a > 5)) — Take_tk <ggb03124@...>
次のものがエラーになるのは何故なんでしょうか?
新井です。
たけ(tk)です。
まつもと ゆきひろです
newです.
[#34994] コマンドライン引数の # — 渋川よしき <yoshiki@...>
渋川と申します。
[#35005] FILE_READPTR — Daisuke Aoki <dai@...>
青木@横浜です。
[#35028] win32.c 中の my* 関数について — 小西 弘将 <konishih@...6.so-net.ne.jp>
小西 弘将です。
なかだです。
小西 弘将です。
小西 弘将です。
こんにちは、なかむら(う)です。
なかだです。
小西 弘将です。
なかだです。
小西 弘将です。
小西 弘将です。
なかだです。
小西 弘将です。
なかだです。
[#35052] ruby_lib/html/ — Wakou Aoyama <wakou@...>
青山です。
にょにょると申します。(ここハンドル投稿ダメなのでしょうか?ダメなら本
青山です。
にょにょるです。オンラインではずっとこれを使っているので、これでいきま
青山です。
はじめまして。Siena. と申します。
青山です。
Siena.%なんだか毎度長いなぁ --; です。
まつもと ゆきひろです
[#35054] 「 Ruby/GTK プログラミング入門」 — Noritsugu Nakamura <nnakamur@...>
なかだです。
むとうです。
[#35058] Y Combinator — sinara@...
"Y Combinator" とは何かというと
続いて、ちょっと数学っぽい解釈をします。先の
At Sun, 12 May 2002 13:59:51 +0900,
[#35081] ISO 8601 と Time#wday — Take_tk <ggb03124@...>
Delphi の日付時刻ルーチンを Ruby にポートしようと思っているのですが、次
[#35087] Re: Y Combinator — 正木 功 <GEC01122@...>
正木です。
[#35102] ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — Kouhei Sutou (須藤功平) <kou@...>
はじめまして、須藤です。
なひです。
須藤です。
なひです。
須藤です。
なかだです。
高橋征義です。
なひです。
なひです。
まつもと ゆきひろです
須藤です。
なひです。
Siena. です。
よしだです
なひです。
[#35109] DOS プロンプトからリダイレクションつきの system — TOYOFUKU Chikanobu <toyofuku@...>
豊福です。
[#35113] Re: Marshallers summary — "NAKAMURA, Hiroshi" <nakahiro@...>
なかひろです。
[#35134] 朝、トーストを食べていると不意に — Shin-ichiro HARA <sinara@...>
「来年から Perl が高校の授業で必修になるってホント?」って
[#35207] tar.gz の展開 — "NAKANO Kouichi" <knuckle@...8.dion.ne.jp>
はじめまして、なかのともうします。
[#35215] ruby-shell-mode — "Shirai,Kaoru" <shirai@...1jp.com>
白井です。
[#35252] ((Time.now)..(Time.now+60)) — Take_tk <ggb03124@...>
たけ(tk)です。
[#35253] ((1.2)..(3.4)).to_a — Take_tk <ggb03124@...>
1.2..3.4 を配列にすると、その範囲に属しない整数「1」が含まれるという点に
まつもと ゆきひろです
たけ(tk)です。
Siena. です。
まつもと ゆきひろです
Siena. です。
まつもと ゆきひろです
[#35264] HTML generation library — Wakou Aoyama <wakou@...>
青山です。
[ruby-list:35060] Re: Y Combinator
続いて、ちょっと数学っぽい解釈をします。先の
S = proc{|x| x[x]}
Y = proc{|g| S[proc{|f| g[proc{|z| S[f][z]}]}]}
ですが、なんとなくできちゃった感じで、もう少し理論的な見方が
無いかと考えたのですが、この問題は実は不動点問題だと気づきま
した。というのは
fact = proc{|f| proc{|n| n == 0 ? 1 : n * f[n-1]}}
は、Proc オブジェクト f に fact[f] という Proc オブジェクト対
応させる関数 Proc -> Proc です。ここでもし
fact[f0] = f0
となる不動点 f0 がみつかれば、これは
proc{|n| n == 0 ? 1 : n * f0[n-1]} = f0
を意味するので、f0 が求める階乗を表す関数になるはずです。
つまり問題は
fact : Proc -> Proc の不動点を求めよ
あるいは、
任意の g : Proc -> Proc に対して、その不動点 Y[g] を与える
Y を求めよ
と表現できます。
この見方は、「不動点」という言葉こそないけれど、「日々の流転」
で紹介された URL:
http://www.itlabs.umn.edu/HyperNews/get/gopalan/courses/CSCI8980-fall-2001/classwork/2.html
にも若干見られます。(今、たまたま「論理と計算」(岩波講座・応用
数学)を見たら Y にはまさに「不動点演算子」という名前があるみた
いですね。)
さて、ここで思い出したのが「Lawvere の不動点定理」という、昔、森毅
さんの『無限集合』(共立出版?)という本で読んだ定理です。これは、
対角線論法を定式化したもので、種々のパラドックスをがこの形に表現で
きるというものですが、やさしいので、定理と証明を書いてしまいます。
[不動点定理] F, V をものの集まりとし、写像
a: F x F -> V
が次の条件を満たすとする。
「全ての写像 h: F -> V に対し、ある F の要素 f0 が存在して、
a(f0, f) = h(f) (f の関数として)
がいえる」
このとき、全ての写像 g: V -> V には不動点が存在する。
[証明] h(f) = g(a(f, f)) に対する上の f0 を取り、
v0 = a(f0, f0)
とおけばよい。なぜなら a(f0, f) = h(f) = g(a(f, f)) より、f に
f0 を代入すれば、a(f0, f0) = g(a(f0, f0)) 。つまり v0 = g(v0)。
そして、これを Proc に当てはめます。ここからはかなりいい加減な話で
す。今、不動点定理で、F = V = Proc と思います。そして、a の定義を
a(x, y) = x[y]
とおくと、これは定理の条件を満たします。なぜなら、任意の
h: Proc -> Proc
に対して f0 = h とおけば a(f0, f) = f0[f] = h[f] だからです。
さて、ここで[証明]における、g: Proc -> Proc の不動点 v0 を求めて
みます。[証明]に倣うと h(f) = g(a(f, f)) = g[f[f]] と置きますが、
これは
h = proc{|f| g[f[f]]}
と置くことです。よって、
v0 = a(f0, f0) = a(h, h) = h[h]
= proc{|f| g[f[f]]}[proc{|f| g[f[f]]}]
となり、これが求める g の不動点でした。
しかしこのままだと、以前と同様に、後ろの f[f] を評価した時に無限
ループになります。そこで、f[f] に遅延評価を施すと、最初の
proc{|g|
proc{|f|
g[f[f]]
}[
proc{|f|
g[proc{|y| f[f][y]}]
}
]
}
が得られます。
以上は「解釈」に過ぎないので、何か新しい発見があるわけではないの
ですが、「対角線論法を肯定的に使う」アリガターイ例ではないかと思
います。
最後の部分、遅延評価させる場所を特定する一般的な方法があれば、更
に面白いのですが、、、難しい。