前回 Ruby 1.9 の新機能に Ruby/SDLを対応させると書きましたが、CVS上では 対応を完了しました。
CVS内にあるsample/caption.rbがうまく動けば まあOKでしょう。
ファイル名は変換しないと書きましたが、rb_filesystem_encoding というものを見つけたので、これを利用して変換できるように しました。ただしデフォルトは変換なしであり、 変換ありにするためには extconf.rb を動かすときに --enable-m17n-filesystem を付ける必要があります。
いまのところこれでリリースしようかどうか考えています。
Ruby 1.9.1もリリースされたことですし Ruby/SDLをどうするのか少し書きます。
まず前提として、現状のRuby/SDL最新版(2.0.1b) はRuby 1.9.1で動作します。当然自分で コンパイルすれば、という前提条件付きですが。 実際Ruby 1.8.xと同等には動きます。なんら問題 ありません。
しかし、1.9の新機能(native thread,m17n)を利用で きると良い部分もあるので、そこは変更する予定です。 native threadについては、SDL::Event.waitが Rubyスレッドの切り替えをブロックしなくなります。 これはCVS最新版で対応済みです。 m17n関連は現在考えている所です。ファイル名などは 下手なことをすると間違いなく混乱するので、 何もしない予定です。文字描画などにだけ余計なことも するようにしようと 考えています。
1.9の新機能を拡張ライブラリから使うには どうすればよいかといった文章もあまりないようなので、 ちと面倒です。
(2009-2-12追記) m17n関連に関しては <URL:http://d.hatena.ne.jp/kouji0625/20081211> が参考になります。
私が思うにHaskellのモナドには以下の3つの重要な側面があります。
で、モナドの種類によってこれらの側面のうち どれが重要かは異なります。 例えばIOモナドであれば、IOという型クラスによって 副作用があり順序が重要な世界と通常のHaskellの遅延評価を 標準で行うような世界を分離するという側面が重要になります。 Parsecもモナドを使いますが、この場合はdo式という構文糖衣を 使いたいというのが重要であるように思われます。
これら3つの要素は深い関係があるのですが、 全ての側面が常に同等に重要というわけではありません。 ある機能がモナドで提供されている場合、それが何故 モナドなのかというのを考えるためにはこういうことを考えて みるのがいいかもしれません。
静的型関数型言語がたいていの場合型推論を 持っているのは、理論的な興味のあるのでしょうが、 基本的には高階関数を活用するためという理由が 大きい気がします。
mapやfoldやその他を利用するのに一々 無名関数の引数や返り値の型を書いてはいられません。
C#で型推論がLINQとともに導入されたのも 同じ理由でしょう。
追記: 逆に言えば高階関数や無名関数が無い場合には 型推論はそれほど必要ではありません。あとまあ 高階関数を導入するなら多相型が必須という話もありますが これは別の話。
銀閣寺GOLD、下鴨ヒーロータウン、プレイシティ車庫前が閉店していた。
私は昔はC++が嫌いでした。いまはわりとどうでもよい 言語ですが。まあそれでも別の選択肢がある場合は使わな い言語ですが。
でまあ今から考えて何が嫌だったかというと、 「C++でなければちゃんとしたソフトウェアは作れない」 とか言う人が目につくのが嫌だったような気がします。 まあなんというか何を言っているのかさっぱり理解で きませんでした。そこに何らかの文脈があってその 上で話をすれば正しかったのかもしれませんが、 その文脈というのも理解できませんでした。
ここで言うような人々が本当に存在したのかどうか、 というのも今から考えれば怪しいのですが。
私より年下の人はC++でなくJavaに対して同様の 感想を持っている人のほうが多そうですがどうなんでしょう。
別に結論のある話ではありません。
_ id:kouji0625 [> m17n関連に関しては <URL:http://d.hatena.ne.jp/kouji0625/2008121..]