最新

val it : α → α = fun

<<  2005/08  >>

2005/08/24 数値変換 on scim-skk

できたー! うひょー。

……と思ったのもつかのま。 boost が肥大化しまくっている。といっても現状では lexical_cast しか使ってないけど、それにもいろいろ依存関係があって、どんどんデカくなってしまっているのだった。こんな感じ。

% du --si boost | tail -n 1
11M   boost
% du --si src | tail -n 1
481k  src

うーむさすがにこんなものを添付するわけにはいかないなあ。

実は依存関係を手繰っていった結果、「んー mpl の一部が必要なのか。んじゃ面倒だし boost/mpl は丸ごとコピーするべ」という富豪的なことをした結果なので、本来的にはもっとずっと減らせる筈ではあるけれども、どんだけ削ったとしても相当な量にはなるだろう。これはまずい。

かといってビルドするには boost をインストールしてください、っていうわけにもいかないよねぇ……と、悩んでいます。てか、はっきり言って lexical_cast で大したことをしているわけではないので(ホントに atoi のかわりみたいなモン)、これくらいなら自分で書け!と。でもそれじゃあ、どれくらいからなら boost を使ったものを公開して良いかという匙加減は正直、よくわからない。

また、実際には boost は開発者とパッケージ作者だけが持っていればよく、単なる利用者はインストールする必要ないから別にいいかなぁとも思っているんですが……だめかなあ。

ということで悩んでいてコミットしていないのですが、まあとりあえず早晩のうちに lexical_cast をやめて自力の関数を書き直してからコミットの予定。しばしお待ちください。

あと、面倒くさいので数値を int にしていたら、2^31-1より大きな数を与えると scim ごとおなくなりになってしまう(笑)。やっぱり long long くらいにしておくとして。 2^63-1 はだいたい 10^19 弱くらいだから、おおなんだ、垓がサポートされないのか……(2^31 は20億くらいなので、1兆円とかを打込めない。まあ数字で1000000000000とか入力する人がどんだけいるんだ、という話はあるんですが)。

そういえば C++ は boost になっても多倍長整数は存在しないのですね。作るのはべつに難しくはない気がしますが、なんでないんだろう。

追記: というわけでコミットした。 unsigned long long なので、一千京より大きな数字を入れると、桁あふれで異なる数値になることがあるけど、実際問題そんな巨大な数値を直接入れることはない気がするし、まあいいでしょう。#0、#1、#2、#3、#4、#5、#9を実装していますが、#4は未テストです。テスター募集中。ってかその前に複数辞書か辞書サーバを扱えるようにしないと、#4は使いづらいか。