Archive for November, 2005

SKK 辞書の活用方法

Posted by on Saturday, 19 November, 2005
>そうか、今までなんで気付かなかったのだろう。 > >ruby-list# /(concat "http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/#0")/ > >とかいったエントリーをユーザー辞書に用意すればいいんじゃないか。 > >……んー、一瞬だけすごく良い思いつきのような気がしたのだが、よくよく考えたらそんなに利用する局面を思いつかん。読んでいて番号しか指定されずに URL をいちいち見るのが面倒なときにコピペ→ddskkの再変換→URL生成→ウマー、というくらいですか。 > >まぁでも風博士ならスマートブックマークのやる仕事だな。 >

生協の白石です

Posted by on Saturday, 19 November, 2005
>というタイトルのスパムが来た。こんな感じだ。 >
> >Subject: 生協の白石です >
> >彼方からの要望・質問をお書き下さい。「なぜ貧乏だと彼女ができないのでしょうか? 」ん〜むずかしいですね、でも私も昔は同じでした          !   一つだけ良い方法があります・・・・あまり教えたくないのですが・・ま・今回だけです人に教えちゃだめですよ・・(メール転送するとか)私が極貧生活を脱っして結婚できたのは下のURLに秘密が > > >あります。 >
> >(ホントはURLが書いてあった)11月末までに結果報告して下さいね。 白石 > >
> >もはや意味不明すぎるが、これを考えたバイト君はなかなかやるなというか機を見る敏というか、不覚にも笑った。 > >しかしだ、最初の「彼方からの要望」ってのはなあ。「貴方」の typo ですかね。 >

Haskell の Array

Posted by on Saturday, 19 November, 2005
>つい山下さんに相談してしまったけど、そか、 >Array は仕様にある >のだった。気になっていたのは、 > > >定数時間でアクセスできるのか? > > > >定数時間で更新できるのか? > > > > >ということなのだけれども、……えーと、書いてなかった orz アクセスはリストよりはずっと速いことが期待できる、というだけか。 > >実際 GHC がどうしているかというと、いわゆる配列を使っているらしい。したがって、定数時間でアクセスできるけれども、更新時にはコピーされるのでアホみたいに遅いのだとか。しかし IOArray ならコピーはされない?とか。んー難しいものだ。 > >けっきょく Map とかを使った方が速いし、楽。順序を気にしないならば。ということのようだ。 > >なので、アクセス時間が log n だけども定数時間で更新できる Array とかあってもいいのになぁ。と、思います。でもそれを Haskell で実装することはできるから、 Array はそのようになっている、というのはアリといえばアリなのか。 >

scim-skk の数値変換の問題……

Posted by on Saturday, 19 November, 2005
>気付いたのですが、 ddskk ではカンマがあっても、それは数値が続いているとみなすのですね。これはやってなかったなぁ。というか、これはどっちが嬉しいのですかね。 > >でしかも、 #,# というオソロしいエントリが SKK-JISYO.L に存在することに気付いたんですよね。何のためにあるんだこれは……(Historical Reason なんだろうけれど)。 > >まぁこのエントリには対応させないでカンマで切らない実装にするのが現実的でしょうな。 >

SQLite の manifest typing の威力(っていうのか)

Posted by on Saturday, 19 November, 2005
>今日の RHG 読書会で指摘を受けて試してみたところ、またキモい仕様を発見してしまった。 > >sqlite> create table tmp (v integer);
sqlite> create table tmp2 (v text);
sqlite> insert into tmp values ('01');
sqlite> insert into tmp2 values ('01');
sqlite> select * from tmp;
1
sqlite> select * from tmp2;
01
> >つまり、 integer なカラムに文字列を挿入しようとするときに、その文字列を評価して数値になるのであれば数値を保存する。一方、数値になりえないのであれば諦めて文字列に保存する。でまあキモいキモいといっていたのですが、 Excel じゃん、と指摘されました。……まあだからといってそれが良いとは思わないですが……。 > >manifest typing =マニフェスト指定については、おおむね動的型付けという理解で良いのではないかということに自分の中では落着きました。ただ、値には型があるわけで、それを利用した最適化フラグとかが Common Lisp ではできるので、そのために型の指定(というか制約というか?)ができると、いうところなのかな。 > >むしろなんで SQLite が manifest typing を名乗っているのかがよくわかりません。 >

OCaml の型推論

Posted by on Saturday, 19 November, 2005
> >http://www.kmonos.net/wlog/sub/typeinf.html >。イイ感じ。でもやっぱαとかβとかで引かれるんじゃないかという気がする。 > >SML の場合、 + はやっぱり int * int -> int かなんかとして型付けされるのだけど、なぜか real が適用されると real * real -> real という型付けにもなりうるという特別扱いなんじゃなかったかと思いました。だから、 > >fun plus x y = x + y > >は int -> int -> int になるけど、 > >fun add1 x = x + 1.0 > >は real -> real になるとゆー奇妙な仕様。 > >あとそうそう話はあんま関係ないですが SML ってタプルが基本なので、演算子のカリー化がえらい面倒です。しかし、まあ、数学的に正しいのはこちらの方という気がする。 >

Zipper

Posted by on Saturday, 19 November, 2005
> >http://www.kmonos.net/wlog/55.php#_2114051118 >を読む。これはなかなか面白い。残念ながら、ちょっと考えて思いつかなかったので答えを見てしまったわけですが、 Chris Okasaki の Purely Functional な Queue とかっぽいですね。よくできているなあ。 > >ちなみに『サナギさん』は傑作ですよ。おれも買ってます。1回あたりのページ数が少ないんでなかなか単行本が出ないんですよね。 >

manifest typing

Posted by on Friday, 18 November, 2005
>「ANSI Common Lisp」、大学の図書館を探したけどなかった。検索してみたら藤沢にはあるらしかった。まったくこの大学ときた日には……。 > >ただまぁ原語版の方はあったのでざっと該当箇所を読んでみた。したらば「変数ではなく値の方に型がある」といったことが書いてあって、これだけではいわゆる「動的な型」のことを言っているように思えた。 Ruby のような。むー? >

止まらない比較

Posted by on Friday, 18 November, 2005
>そういえば >http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20051118#p01 > に関連して、 Eq でデフォルトの定義をしないとどうなるか、というのを思えばやったことなかった。たぶん停止しないと思うんだけど…… > >data D = A | B
instance Eq D
> >うむうむ、コンパイルは通った。 where 節以下はオプショナルだったんだなあ。んで、 > >*Main> A == A
*** Exception: stack overflow
> >スタック溢れた(笑)。一瞬、なぜかよくわからなかったですが、そういえば not する必要があるからどんどんスタックが蓄積しますね。 >

巨大数の数値変換@skk

Posted by on Friday, 18 November, 2005
>ところで、↑の数はあまりにも巨大なために scim-skk では桁が丸めこまれておかしな数値になってしまいました。 unsigned long long を使ってたんですが、そういえばそれを越える数値の場合の処理をしていなかったですね。ちなみに unsigned long long の最大値はだいたい一千七百京くらいです。 > >ddskk ではどうかと試してみたところ、「数がデカすぎる」というエラーが出て変換させてもらえないみたい。変換させてやれない、というのはいかがなものかと思いますが、変換候補がないっていう処理にした方がいいのかなぁ。うっかり気付かないと大変だし。 > >多倍長整数を使う、というのもアリなのですが、STLに存在しないので実装するのが面倒くさいこと、9999無量大数を越えた数値の場合にどういう表示にするのかわからないこと、そんな巨大な数値を扱う場面がほとんど考えられないので費用対効果が薄いこと、などが理由です。ってか Boost にもないのか、多倍長整数。ちと意外。 >