Haskell始めました

Haskellは前に少しだけ触ったことがあるのですが、ちゃんと使ってみようという気になりもう一度勉強を始めました。

とりあえず有名処理系のGHCをダウンロードしようとしたところ、ダウンロードページにHaskell Platformでライブラリと一緒に入れたほうがいいよ!と書いてあったのでそちらをインストール。

まずは階乗の計算から。

--fact.hs
fact 0 = 1
fact n = n * fact (n - 1)

main = print (fact 5)

プログラムはmain関数から始まります。関数factの定義が何の予告もなしに二行になっているのが数学っぽいですね。また、コメントには「--」から行末がコメントになる形式と、「{-」と「-}」で囲む形式があります。

これをghcコンパイルして実行すると、

$ ghc fact.hs -o fact
$ ./fact
120

と出力されます。インタプリタはghciにありますが、関数定義にletが必要だったり面倒なので、デバッグとかに使ったほうがよさそうです。

QtのPhononモジュールで動画再生

QtにはPhononというクロスプラットフォームなマルチメディアAPIが付属しています。PhononはもともとKDE向けに開発された、DirectXQuickTime・GStreamerなどのバックエンドを抽象化するAPIで、音声や動画の再生を簡単に行うことが出来ます。
今回は早速、動画の再生をしてみました。

#include <QApplication>
#include <Phonon/VideoPlayer>

int main(int argc, char* argv[]) {
	QApplication app(argc, argv);
	
	Phonon::VideoPlayer player(Phonon::VideoCategory);
	player.play(QString("./smile.flv"));
	player.show();
	
	return app.exec();
}

実行結果

実際の処理をバックエンドに任せているためか、動作はかなり軽いですが、読み込めるフォーマットの種類もバックエンドに依存するようです。

QtWebKitがすごすぎる

最近Qtを使い始めたのですが、QtにはQtWebKitというWebKitベースのブラウザエンジンが付いています。
せっかくなので遊んでみよう、と思ったらあまりに簡単で驚いたので紹介です。

#include <QApplication>
#include <QtWebKit>

int main(int argc, char* argv[]) {
	QApplication app(argc, argv);
	
	QWebView view;
	view.load(QUrl("http://www.google.com/"));
	view.show();
	
	return app.exec();
}

実行結果

動作は結構もっさりしています。Google Mapなどは普通に見れますが、httpsでの通信や動画の再生などはこれだけでは出来ないようです。