2002-01-20
λ. WebMoney
ケッシーの日常(2002-01-18)で知ったんだけど、WebMoneyって面白いね。
山形浩生の「もっといい加減なデジタル署名を」をちょっと連想した。こういうのも確かにSETのような本格的なプロトコルじゃなくて、あんまし本格的じゃないやつから馴らしていくというのが必要なのかも知れない。
λ. 風の大陸
ビデオに取ってあった「風の大陸」の映画を見た。悪くはないけど……物足りないな。
2003-01-20
λ. 論文読み会 "Fold and Unfold for Program Semantics"
この論文の前半について解説した。個人的にこの論文で面白かったのは polytypic fold/unfold をHaskellで表現するテクニックだったので、そこを取りあげられなかったのは少し残念。
つーか、CCSはカードキャプターサクラですか?
λ. 夕食
サイゼリア
λ. CPL
『どうせなので、単に実装しただけじゃなくて、こいつを利用して何か論文書けないかなぁ〜、でも「再実装しましたー」じゃ論文にならんしなぁ』とか思っていたら、未踏ユースにでも応募して何かやってみたらどうかと言われる。そっか、そういう選択もあるんだよなぁ。
2004-01-20
λ. YARVでの末尾再帰
YARVにsendとendを融合した新しい命令(tailsend)を導入することで、スタックを消費しない末尾呼び出しを実現してみる(yarv000c-tail.diff)。ただし、クロージャのこととかは全然考えてない。
それと、余計なスタック操作が加わるので当然遅くなるはず。簡単なプログラムで試してみると1.7%ほど遅くなった。場合によってはもっと遅くなることも考えられるけど、これくらいならなんとか許容範囲?
インタプリタ | 実行時間(秒) |
---|---|
ruby | 47.14 |
yarv | 10.18 |
yarv(tailsend) | 10.35 |
評価プログラム:
def test(n) if 0==n 0 else test(n-1) end end i = 0 while i < 10000 test(1000) i += 1 end
2007-01-20
λ. 関数従属性の落とし穴
以下のようなコードが型エラーになることに驚いた。
class Assoc a b | a -> b instance Assoc Int Int f :: Assoc Int b => Int -> b f x = x
fの型チェック時には個々のインスタンス宣言を参照したりしないから、考えてみれば当たり前なのだが。しかし、関数従属性(Functional Dependencies)やGADTを使うと依存型っぽいことが一部実現できるが、ちょっとでも複雑なことをしようとするとすぐに落とし穴にはまる気がする。本物の依存型が欲しい……
λ. YARVへの感慨
そういえば、YARVに末尾再帰用の命令を追加して遊んでいた(20040120#p01)のがもう3年前か。そのYARVもついに本体にmergeされたんだよなぁ……
2009-01-20
λ. 掛け算の順番と単位について 〜 3個 × 50円/個 ≠ 150円 ?
今の小学校の算数では「50円のリンゴが3つあったときの総額」は「50×3」であって「3×50」ではないと教えているらしく、「3×50」と書くと間違いにされるという話を聞いて驚く。 自分が小学校のころにどう教わったかはもう忘れてしまったけれど、実数の掛け算は可換ということに馴染んでしまった今となっては、なんだか非常に不思議な感覚だ。 しかも、1998年の黒木のなんでも掲示板(0018)なんかでも、この話が出ていて、結構昔からある話のようだ。
まあ、真面目に考えても仕方がない問題だとは思うのだけど、どう考えればこの掛け算の順序に理由付け出来るのか気になり、ちょっと考え込んでしまった。 それで思ったのは、単位の代数セオリーが通常のアーベル群*1ではなくただの群になっているのではないかということ。 アーベル群だと演算が可換なので、α,βを単位として α・β-1 と β-1・α の区別をする必要はなく、どちらも単に α/β と書くことが出来る。 一方、ただの群だと α/β := α・β-1 と β\α := β-1・α は等しいとは限らず、区別をする必要がある。
で、掛け算は数と単位に関してそれぞれ積になっているとすると、50 円/個 × 3 個 = 150 (円/個)個となり、単位は (円/個)個 = 円個-1個 = 円 となるが、一方 3 個 × 50 円/個 は 150 個円/個 となり、個円/個 = 個円個-1 が円と等しいことは群のセオリーからは言えない。 うん、個人的には割と納得できるな。ただ、これだと 個\円 のような変な単位が出てきてしまい、それを使った 3 個 × 50 個\円 = 150 個(個\円) = 150 円 のような計算も出来てしまうけどね。
*1 例えば、MKS単位系はメートル(m)、キログラム(kg)、秒(s)の三つの単位を生成元として生成される自由アーベル群。
ψ yoshihiro503 [むしろ、右からの作用がある加群と思った方が自然かも。]
ψ 小熊善之 [算数教育における、四則演算教授上の一貫性を維持するのが目的かな、とか思った。]
ψ きしもと [1977年生まれが小学校の時ですが、長方形の面積は縦×横(逆だったか)とかいう「公式」を「正しくあてはめる」ことを要..]
ψ さかい [>yoshihiro503さん なるほど。私は複数の単位の扱いなどちょっと一般的に考えすぎてましたが、作用を使う考え..]
ψ 標準モデル [私もこのことに関してちょっとした激論が交わされてるのを見たことがあるんですが、そこで >小学校2年生の掛け算の文章..]
ψ さかい [標準モデルさん、ありがとうございます。 その理由には確かに、なるほどなと思いました。 それにしても、教育というのは難..]
ψ NS1 [唐突ですが、以前日記に出てきていたCygwinを始めました。 Xサーバを動かしたいが、PC9821だからか、これがな..]
ψ ちゃた [おらは、はるか昔劇場で観た記憶があります]
ψ chiko [劇場でみたよーな。記憶があいまいですけど。パンフレットが実家にあったので、きっと見たんでしょう]
ψ さかい [マイナーかと思いきや結構見られてるんですねー 「風の大陸」は結構好きなので嬉しいなぁ。 そういえば、太陽帝国編も佳境..]