どう書く?org に Smalltalker は 一人

プログラムのお題に対していろんな人がいろんな言語で投稿するサイト エロと風俗情報満載 どう抜く?LL魂 で初めて知りました。LL魂での発表の時点で 全ての設問に答えている言語はたったの4つ。そのなかにSmalltalk が入っているという快挙に 「これはsumimさんの仕業に違いない」と思い、家に帰ってからアクセスしてみると

100% sumim さんの仕業でした(笑)



というようなことを 先日のエントリーで書いたら、sumim さんから

三猫さんも、なにか思いついたときでいいので Smalltalk で投稿してみてください(^_^;)

という やさしいお誘いがあったので、早速アカウントを取って参戦しました。しかしこれが Smalltalk陣営への増援になるかというと、かえって 獅子身中の虫じゃないかという気がします(^^;。もっとちゃんとした Smalltalker の方々が いっぱい参戦してくれると嬉しいです。

書いてみて解ったのですが、どう書く.org は良いのですが、微妙に気になるところもあります。というのは、書いている先が 自分の blog じゃないと言うのが 書きづらさを感じさせてしまう点。書いたモノが自分のコンテンツの中にない感じが、投稿意欲にマイナスに作用している気がします。コードを書くのはそれなりに労力がいるので、自分の blog は更新全然なし、って状態になりがち。お題と、その解答blog 記事のリンク集的なほうが良いかな?っと思ったりします。でもこれはサイトの規模・知名度が大きくなれば 「どう書く.org に書いてしまったぜ、ふふんっ」感に変わると思うので 難しいですね。以上 第一印象でした。

さて、私のエントリーですが簡単そうなお題 http://ja.doukaku.org/40/http://ja.doukaku.org/29/ を取りあえず書いてみました。身の丈にあったお題を選ぶのは大切ですね(←絶望先生を見ながら書いてました)

| getDigitsAndPlace |
getDigitsAndPlace :=
    [:x |  
      | func  |
      func := [:d |
                 (10 ** d) <= x
                    ifTrue: [func value: d + 1]
                    ifFalse: [ Array with: d with: 10 ** (d-1)]].
      func value: 0].

Transcript cr; show: (getDigitsAndPlace value: 2649) printString;
           cr; show: (getDigitsAndPlace value: 1) printString;
           cr; show: (getDigitsAndPlace value: 600) printString

"== 結果 ==
#(4 1000)
#(1 1)
#(3 100)
"
| nDaysLater fiveDaysLater now |
nDaysLater := [:n | [:timestamp |
                       timestamp addSeconds: n*60*60*24]].
fiveDaysLater := nDaysLater value: 5.

now := Timestamp now.
Transcript cr;
           show: 'now= ';
           show: now printString.
Transcript cr;
           show: '5days later= ';
           show: (fiveDaysLater value: now) printString


"== 結果 ==
now= August 5, 2007 11:37:34.071
5days later= August 10, 2007 11:37:34.071
"

どちらも VisualWorks です。Squeak でないのは、ブロッククロージャが欲しかったからです。ヘッポココードなのに激しく落ち込みます。ですがありのままを曝してこそ良い勉強になる、ということで どう書く.org はいいですね。