トップ «前の日(10-01) 最新 次の日(10-03)» 追記   RSS 1.0 FEED  

Journal InTime


2001-10-02 (Tue)

_ 未読

神様、一週間もメール読んでなくてごめんなさい。 もうしませんから、奇跡で未読メールを減らしてください。

(神の声: M-x wl-summary-mark-as-read-allせよ。)


2003-10-02 (Thu)

_ out/inout

引数のout/inoutモードを実装。 が、ここでやっかいな問題が。

Satherのout引数は、実引数の型が仮引数の型のスーパータイプである場合に適合する。 どういうことかというと、

abstract class $PERSON is
  ...
end;

class PROGRAMMER < $PERSON is
  ...
end;

のようなクラスがあった場合、

set_shugo(out x: PROGRAMMER) is
   x := #PROGRAMMER("shugo");
end;

のようなメソッドを、

person: $PERSON;
set_shugo(out person);

のように呼び出せるということだ。 (personの型がPROGRAMMERではなく$PERSONであることに注目)

問題なのは実引数がreference typeで仮引数がvalue typeであった場合だ。 たとえば、

set_one(i: INT) is
  i := 1;
end;
...
  o: $OB;
  set_one(o);

のような場合、$OBはすべてのクラスのスーパータイプに相当するので、前述のルール で行けば、このコードに問題はない。

しかし、.NETではvalue typeをreference typeに変換するにはboxingという処理を 行う必要があり、set_one側では実引数がreference typeかどうかを知るすべがない ため、boxingすべきかどうかわからないのだ。

というわけで、とりあえずこういうケースはエラーにした。 (ちなみにC#ではoutパラメータの型は完全に一致しないとだめらしい。)

で、書いてて気付いたけど、set_fooの実装を二つ用意してoverloadを解決する時に 適切な方を選べば実現できるかもしれない。と思ったが、out引数が複数あったら 組み合わせが多くなって破綻するなあ。 まあ、どうせあんまり使わないだろうから、とりあえずこのままで行くか。

(あとで、呼び出し側でいったん別のローカル変数を渡しておいて、呼び出し後にboxing するだけでいいことに気付いた。アホすぎ。)

次はいよいよiteratorだ。

_ Subversion

Subversionを導入してみた。

<URL:http://svn.shugo.net/svn/repos/babel/>

何にも考えなくてもrepositoryをhttpで公開できるのはナイスだ。 しかし重いなあ。

そろそろちゃんとしたプロジェクト名も考えねば。


2004-10-02 (Sat)

_ DebianJava

I got a problem because the scripts aren't currently set to recognize the file name of the java 1.5 binary from sun (this may well be fixed by the time you read this.) To fix it I edited /usr/share/java-package/sun-j2sdk.sh.

[MF Bliki: DebianJavaより引用]

こんな感じの変更で上手く行った。

 
--- /usr/share/java-package/sun-j2sdk.sh.orig   2004-10-02 11:18:02.000000000 +0900
+++ /usr/share/java-package/sun-j2sdk.sh        2004-10-02 11:18:37.000000000 +0900
@@ -27,6 +27,11 @@
            j2se_expected_min_size=122 # 125899 kB
            found=true
            ;;
+       "jdk-1_5_0-linux-i586.bin")
+           j2se_version=1.5.0
+           j2se_expected_min_size=122 # 125899 kB
+           found=true
+           ;;
     esac
     if [[ -n "$found" ]]; then
        cat << EOF

j2se_expected_min_sizeは適当。

eclipse 3.0のdebってどっかにないのかな。

Tags: Debian

_ Markdownスタイル

BlueClothを使ってMarkdownスタイルを書いています。 今日中に出来るかな?

[Devlog(2004-10-01)より引用]

お、期待して待ってます。

RDでちょっと不満なのは以下の点:

  • インデントしても、たとえば先頭が「---」だと、verbatimになってくれない。
  • インラインの記述が冗長。
  • 引用がない。

まつもとさんは、インラインの入力はemacs lispに頼っているらしい。 ちょっと意外。

本日のツッコミ(全1件) [ツッコミを入れる]

_ MoonWolf [Markdownスタイルですが、とりあえずdevlogで動いています。 まだプラグインが動きませんが(^^; tDi..]