2006-06-01から1ヶ月間の記事一覧
壊れたノートPCの修理費の見積りがきた。マザーとDVDドライブのピックアップ交換、しめて13.5万円也。orz 16万円出せば同等品、17万円だせばCore Duo搭載品が買える。修理するべきか、新しいのを買うべきか…。
usataさんとこの日記を読んで、「マウスの右をクリックしながら左ボタンをクリックする」と「戻る」になり、「マウスの左をクリックしながら右ボタンを押す」と「進む」になる、という事を知った…のだが、手元の環境ではできなかった。All-in-One-Gestureも…
Nautilusは重い。ディレクトリに何個のファイルが入っているのかをわざわざカウントしてくれるので、ホームディレクトリとかを開くのに非常に時間がかかる。(不精者なので、ホームディレクトリに100個以上のディレクトリがある。)まぁ、便利と言えば便利な…
クラスタリング結果を可視化してみた。可視化にはgraphvizを使った。当初はPNG形式での出力を試してみたのだが、10分以上経っても終わらないのであきらめた。ラスタ画像形式が良くないのかも、と淡い期待を抱いてSVG形式での出力を試してしてみると、なんと1…
類似度計算で、最も類似度の近い文書対を返すべきところで最も遠い文書対を返していた事に気づいた。修正してクラスタリングをやり直してみると、大きな一つのクラスタができあがった…。orz
予備実験として文書のクラスタリングをしているのだが、どうにもうまくいってないような感じがする。やはり単語の重みづけぐらいはしないとダメか…。
部分適用がわかるようになって、cutの便利さを理解した。cutスバラシス。
略してSTM。興味深いテクノロジだと思うのだが、どういう風に実装されるのか、想像がつかない。副作用はどうするんだろ。
トピックモデルでのトピック数の推定って、もしかしてクラスタリングにおけるクラスタ数の推定と似てる?
read-lineにallow-byte-string?を指定しなければいけないと言う事に気づかず、30分ほど浪費した。ていうか、これ、前もひっかかったような気がするな…。
OriginalのLispにあったとても大事なNILがSchemeではなくなっているが、それでもSchemeはLispの仲間として分類される。Lispの本質というのは一体どこにあるのか、という講義での問いかけ。 たぶん、S式なのではないかと思う。要するに、括弧がたくさんあれば…
Parser CombinatorのCombintorって、Combinator CalculusのCombinatorかと思っていたのだけれど、どうやら関係ないのでは、と思い始めた今日このごろ。
壊れたThinkpad T42は、マザーボード交換になるようだ。10万円ぐらいはかかりそう、らしい。しょぼーん…。
大学院の講義でλ計算をするというのはどうなんだろう…。 まぁ、λ計算は院試のときにβ簡約をちょろっと勉強しただけなので、実はありがたかったりしたのだけれど。 条件分岐の実装は、真理値も関数である、という事で実現できるという事、始めて勉強したとき…
関数クロージャがあればカリー化が実現できる、というのはよくわかるのだが、カリー化があれば関数クロージャが実現できる、というのがよくわからない。そもそも関数クロージャがまだよくわかってないのかもしれない。 それにしても、カリー化という言葉は容…
リージョン推論を導入することでGCの負荷を下げる事はできないだろうかと考えてみたのだが、保守的GCは生きているオブジェクト数に比例してマークコストがかかるわけで、リージョン推論を入れても実際に生きてるオブジェクトの数が変わるわけではないはずな…
マシンが動かない→HDDを取り出してサブマシンに付け替えてみる→HDDは壊れていないことが判明→とりあえずサブマシンで作業することにしよう→ハードウェアが違うのでxglxが起動しない→通常のXはxglxの設定をする時に壊したので起動しない→OSごと再インストール…
0除算でNothingを返す、mydivという関数を作ってみた。 mydiv1 _ 0 = Nothing mydiv1 n d = return (div n d) この関数をghciで実行してみると、問題なく動く。型推論の結果は(Integral a) => a -> a -> Maybe a。では、Nothingをこの定義からなくして、戻り…
見せたくない、見たくない物を隠蔽してしまうという点で、マクロとモナドには共通点が見られる。どちらも利用するだけの立場で、読み書きデバッグはせずに済ませたい、という点でも共通している。
Parsecを別の言語に移植できないか、考えてみた。しばらく研究をサボって考えてみた結果、Parsecの本質は>>=と、tryあたりにあると見た。Schemeで書くことを考えると、tryはまぁいい。も比較的簡単に書ける。しかし、>>=は書き難い。>>=をdo記法で書き直す事…
連接がモナドなのだとしたら、反復は再帰だろう。選択は…遅延評価?
インスタンスとは、型クラスにおいて要求されている関数を具体的に実装した「型」…であると思っていたのだが、「型構成子」でも良いそうだ。ここのところがなかなか飲み込めない。ディスパッチする関数を決定するという点においては、型構成子でも十分に決定…
言いきってしまったが、実のところ、あまり自信はない。と、エチケットペーパーを敷いてからはじめるよ。 Haskellにおけるモナドの本質は、「つなぐ」ところにあるのではないだろうか。 例えば、IOモナドは副作用をつなぐ事で、実行順番を指定する。Maybeモ…
Cでパーサコンビネータを使ってパーサを構築できないかと考えてみたが、これはやっぱり難しそうだ。実現できなくはないと思うけど、美しく実装することは不可能に近いのではなかろうか。 うん、まぁ、どっちにしろ、Cでパーサを書く気なんて、さらさら無いん…
Haskellにおいて、Maybeは型構成子であって型ではないので、Maybe型という表現は初学者の混乱を招くのではないだろうか、Maybe a型と書くべきなのではないか、と思うのだけれど、まだ理解が足りないのかしら。
スタックスタックと書いてきたが、計算途中の値を保存しておくデータ構造、もしかするとスタックじゃなかったりするのかしら。これもありえそう。なにせ関数型言語だ。油断は禁物だ。
上記の非末尾再帰のfactは、もしかしたらfact 5 = 5 * fact 4 = 5 * 4 * fact 3 = 20 * fact 3 ...という風に実行されてるんじゃなかろうか。そうだとしたら、スタックが溢れない説明がつく。つまり、スタックの内容を簡約できそうなら、簡約してしまう、と…
Haskellにおいて、末尾再帰の最適化というのは、どうなっているのだろう?気になったので、ちょっと試してみた。適当に階乗を定義して、実験してみる。 fact 0 = 1 fact n = n * fact (n - 1) 末尾再帰にすらなっていないが、このfactは、fact 100000とか実…
プレゼンテーションにおいて一番大事なものはストーリーである、というのはBeyond bullet pointsに書いてあったことであるが、まったくその通りだと思う。さらに、自分の少ない経験を思い出してみると、多くのプレゼンテーション(というか、なにか話をする…