2007-04-01から1ヶ月間の記事一覧
[id:lethevert:20070425:p2]について、解説を期待されていたので、説明を試みてみる。 java.util.HashMapの方は、ハッシュテーブルの実装として誰もが思い付くような標準的な実装になっています。 static class Entry<K,V> implements Map.Entry<K,V> { final K key; V</k,v></k,v>…
https://www3.idpass-net.sia.go.jp/neko/action/z0401 申し込んでみたのだけれど、Linux firefoxな環境では、申請ができなかった。 ご利用環境を見ると 本サービスについては、「Microsoft Windows2000(SP4)」以降のOSと、「M…
[id:sumii:20070430:p1] あー、なるほど。JVMがC++で書かれているなら、そのC++プログラムにデバッガを当ててあげれば、アセンブリを表示できるねぇ。 ・・・って、やっぱりそれしかないのか・・・
[id:lethevert:20061103:p2]でshelarcyさんが言っていたStdHtmlの件に関連して、CleanのCGIのライブラリを作ったりしてないか、という問い合わせがCleanの中の人の一人から来てました。 どうも、CGIのパラメータの受渡しやらクッキーの取り扱いやらのあたり…
Clean MLにあがっていた「初心者の質問」というメールの件を追いかけてみたら、極めて微妙なバグらしきものを見つけた。 Start = let n1 = 9.88131291682493E-324 / 10.0 n2 = 9.88131291682493E-324 / 10.0 in (n1 <> 0.0, n2 <> 0.0, n2) これが、どう考え…
どうも私は昔から力を入れている事柄に関してはマネジメント(というかプロデュースという方が実態に近い?)する立場に立ちがちで、仕事の方も最近はそういう感じ*1になりつつあるのだけれど、あまり本意ではなかったりする。 なんていうか、足腰がちゃんと…
[id:lethevert:20070426:p5]で作った参照型を使って、ログ機能を作る。 log :: !(*File->*File) !(.b,!*(Ref *File)) -> (.b, !*(Ref *File)) log f (b,rf) = (b, apply f rf) というログ関数を作っておいて、(ちょっと関数名をかえて、整理した) Start w …
[id:hirose31:20070419:1176968993] こうやって使うのかー
http://www.kitami.tv/subnote/2007/04/11.html 条件が11もあったら普通の人には実践不可能だと思う。
ということで、こっち(→http://lethevert.blogspot.com/2007/04/concurrent-clean-reference-type.html)に説明を書いて、MLに投げてみた。
http://blog.miraclelinux.com/yume/2007/04/74_0ddd.html 参加してみようかと思ったのですが、残念ながら気づいたときには定員でした。
[id:lethevert:20070425:p3]だけれど間違ってる。 リポジトリを使うという方法は関数的でないところが問題ではなくて(一意型を使えば、関数的に扱えるから)、型付けの問題と安全性の問題が引っかかっているのと、リポジトリサービスそのものをCleanでどう…
[id:rsky:20070424:1177407957] メルセンヌ・ツイスタって、暗号には不向きなんじゃなかったっけ?
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index-jp.html メルセンヌ・ツイスタの改良版? 今度Cleanに移植しよう。
代数データ型と配列は、実装上の内部構造が大分違うらしい。 代数データ型として宣言したエリアに配列を割り当てようとすると、Segmentation faultになる。
というわけで、参照型を作ってみた。Cleanでは配列を破壊的に更新できるという特徴を生かして、マジックプログラミングしました。 ::*Ref a reference :: !.a -> *(Ref .a) copy :: !*(Ref .a) -> (!*(Ref .a), !*(Ref .a)) apply :: !(.a -> .a) !*(Ref .a)…
file :: !Int -> *File file 1 = code { push_b 0 } 上の関数定義を作ると、次のエラーになってコンパイラがこける Run-time error! Program evaluated undefined value?!clm: reading compiler result failed: No such file or directoryまた、次のようなの…
C側の実装は大方できた。 あとで、Clean側のラッパーを作ってつないでみる。
o1.equals(o2) と o1 == o2 の違いだけではないよ。 なんのことが分からなかったら、一度src.zipの中を見てみるとよいかも。
[id:lethevert:20070424:p2]の件だけど、サーバーをCleanで実装するとして、どうしたらよいのだろう? いろいろ考えたけれど、ハンドル([id:lethevert:20070422:p2]の意味で)と実体を分離した場合、ハンドルを普通に純粋関数的に作ることは無理なんじゃな…
[id:lethevert:20070423:p3]について、検証してみた。 module Main import StdFile, StdDebug Start w # (_,fout,w) = fopen "output.txt" FWriteText w (_,fin,w) = fopen "input.txt" FReadText w (cfin,fin) = lazyIO fin (data,fin) = toLines fin fout …
状態の表現に関する一連のエントリ [id:lethevert:20070422:p2] [id:lethevert:20070423:p1] と、遅延IOの一連のエントリ [id:lethevert:20070423:p3] [id:lethevert:20070424:p1] を通して、ひとつの考え方がまとまってきた。 これまでファイルアクセス用オ…
[id:lethevert:20070422:p2]を書いた後に、すべてを純粋関数指向で書くにはどういうモデルを採用すればよいのかを考えていた。 昨日のモデルは、言うならば、クライアント/サーバーモデルという感じなわけだけれど、サーバー側(つまり世界の側)のプログラ…
Haskellのモナドが圏論のモナドをバックグラウンドに持っているように、Cleanの一意型は線型論理をバックグラウンドに持っている(らしい)。 ちょうどよいところに、id:m-hiyamaさんが線型論理の説明をしているので、メモ。 [id:m-hiyama:20070411:11762555…
以前、遅延IOを作るためにtransactionというモジュールを作ったことがあるのですが、 http://lethevert.blogspot.com/2006/10/transaction.html これを使わなくても遅延IOは普通にできるのではないかと気づきました。 Start w # (_,fin,w) = fopen "input.tx…
DelphiでSAXとかGoogleで調べても、一番便利なライブラリが埋もれてしまうので、ここにメモしておこうと思います。 DelphiからはExpatが利用できます。 http://expat.sourceforge.net/ ExpatはC言語で書かれたSAXライブラリで、さまざまなアプリケーションや…
正解を知っているわけではないですが、環状リストとかを使うものとかは無理っぽい気がしますね。 どう頑張っても、同じ要素が繰り返し出現する無限リストにしかならないような気がします。
私の感覚で言うと、新しいオブジェクトをその都度生成しているという認識はないですねぇ。 どちらかというと、こういう感じかな? 普通のオブジェクト指向言語を使っているときは、世界を抽象化したモデルをプログラムの中に作り上げて、それを直接あれこれ…
サーバー側(下で説明した世界の側のプログラム部分)をどういう風に書けばよいかということは大体わかって、素材となるCのコードも大体書けた。 あとは、これらを組み合わせて、クライアント側(Cleanの部分)のインターフェースを作っていけばよい。 あ、…