sc15314-00相変わらずTcl/Tkの拡張とプログラミングをしている。楽しい。

Tkの文字を扱うtext widgetは高機能で,任意の領域の文字のフォント、サイズ、色などを設定できるし、文字以外に画像やウィジェットも入れることができる。但し内容をファイルにセーブしようとすると全部自分でやらなければいけない。その部分を作ったので、おお高機能!楽しい!となっているわけだ。Tcl/Tkで扱える画像はgifとpngだけだが自分で拡張もできる。そこでjpegも扱えるように拡張した。これで画像を好きに扱えるのではないかと思ったが、任意のサイズに変換する機能がない。整数倍に縮小する機能しかない。で、これも自作コマンドで拡張。画像ビューアーとか作れてしまいそうだ。


Tcl/Tkが好きな理由の1つは、偉ぶっていない(?)こと。単純なスクリプト言語で、オブジェクト指向でも関数型でもない。しかし、その巧みな仕組みで、いろんなことができる。upvarで他のスタックの環境で値を評価できたりするので、forやwhileのような制御構文みたいな機能をもつ関数を定義できる。無名関数はないが、いろんなところにスクリプトを押し込むことができるので、関数に渡したり、変数に入れておくこともできる。

複数のファイルに分割したソースを容易に扱えるのも凄くいい。これは関数がみつからなかった時に呼び出されるハンドラで定義されている機能だが、事前にauto_mkindexでtclIndexというファイルを作っておくと、このファイルをみて必要なファイルを自動でloadしてくれる。 プログラムを作っていて、いくらでもファイルを分けれるので非常に作りやすい。

まぁでも、古い環境で喜んでばかりいても不安なので、新しそうな関数型言語にも手を出してみる。なんで関数型言語かというと、たまたま「初めて学ぶ人にも,挫折した人にもきちんとわかる:[入門]関数プログラミング―質の高いコードをすばやく直感的に書ける!」という記事を読んだから。でも実用的なプログラムはできるのか疑問になって調べると YesodというWeb FrameworkがHaskellで動いているらしい。でまぁHaskellを勉強してみようかと、よさ気な本を物色し「すごいHaskellたのしく学ぼう!」のkindle本を購入。何日かかけて、ざっと目を通した。感想は、Lispじゃん。何かの皮を被ったLisp? すごい機能がいろいろあるのかもしれないが、その部分は、まだわからなかった。次の本に進もう。