[SML 7579] Duration

AOKI Atsushi atsushi @ cc.kyoto-su.ac.jp
2009年 6月 29日 (月) 13:42:59 JST


青木@京都上賀茂です。

次期バージョンである VisualWorks 7.7 から、Duration というオ
ブジェクトが具備されます。Magnitude のサブクラスで、比較演算
や算術演算などができます。

Object
| Magnitude
| | Duration

Duration には totalNanoseconds というインスタンス変数が1つあ
ります。ナノ秒ですから、かなり先を見越した造りになっています。

どんなふうに用いるのでしょう。典型的な例を幾つかあげてみます。

123.45 seconds
==> 2 minutes 3.449996939 seconds

123.45d seconds
==> 2 minutes 3.45 seconds

123.45s seconds
==> 2 minutes 3.45 seconds

123450 milliseconds
==> 2 minutes 3.45 seconds

123450000 microseconds
==> 2 minutes 3.45 seconds

2 days + 3 minutes + 123 seconds + 456789 microseconds - 2 hours
==> 1 days 22 hours 5 minutes 3.456789 seconds

ご覧のように、数が Duration のインスタンスを生成する単項メッ
セージに応答できるのです。

もう少し例をあげましょう。皆さんは、あるプログラムの走行時間
を計測するのに、以下のようにしていたと思います。

Time microsecondsToRun: [1000 factorial]
==> 4018

次期バージョンからは、下記のように書くことができます。

(Time microsecondsToRun: [1000 factorial]) microseconds
==> 4.054 milliseconds

もっと簡潔に、次のように書き下ろしてもいいでしょう。

[1000 factorial] timeToRun
==> 3.998 milliseconds

また、Delay との相性も良く、今まで次のように書いていたのを、

(Delay forSeconds: 3.45) wait

これからは以下のように書いてゆくことになると思います。

3.45 seconds asDelay wait

評価系のメッセージも、これからいろいろ作れそうで、面白そう。

3 milliseconds
    toFinish: [1000 factorial]
    orElse:
        [^Transcript
            cr;
            show: 'give up'].
^Transcript
    cr;
    show: 'okay'

さて、さて、皆さん、Duration の適切な日本語訳は何でしょうか?

------------------------------------------------------------
AOKI Atsushi          http://www.cc.kyoto-su.ac.jp/~atsushi/


SML メーリングリストの案内