2008-05-01から1ヶ月間の記事一覧

Functorの混乱

[追記:おかしいところについて]用語の混乱があったり、勉強不足があったりで、間違ったことを書いてあります。まず、functorなんですが、これは圏論での関手が英語圏ではfunctorと呼ばれていたり、C++などで使われるファンクターというものがあったり、さら…

Haskellで(むりやり)やるオブジェクト指向

Haskellにもclassがあるのだから、C++とかで見るオブジェクト指向もできるでしょうということで、無理やりやってみました...笑って見過ごしてやってください。一応、クラスの継承関係もできるので、ここではObject -> Animal -> (Dog, Cat)という構図になっ…

Programming Windows in Haskell

えー、いまさら何をやってんだという声も聞こえてきそうですが、普段Win32を使うことがとても多いので、Haskellで簡単なWin32のアプリを書いてみました。ちょっと長めなサンプルなので、コードは最後につけときます。Win32でウィンドウを表示する基本的なプ…

Haskellでのリソース管理

C++にあってCにないものの一つ、クラスのコンストラクタとデストラクタがあります。これを使えば、スマートポインターなどといった、リソース管理を半自動化することができるような便利なクラスを定義できるようになるわけです。プログラムを書いていると、…

do文の意味

きっかけは、こんな雰囲気のコードでした: main = do args もうちょっとましな書き方はあるだろうという話はここでは触れないことにして、これは、コンパイルしないわけです。エラーは:do.hs:10:12: Not in scope: `args'つまり、最後の行(x:y:_)=argsで使…

順列組み合わせの生成

重複、省略のない順列を返す関数を書いてみました。なんだか、もっと簡単にかけそうな気がするのですが、さっぱりといきません…Preludeとかにあっても驚かない気もするのですが、見つかりませんでした。順列生成の元となる要素集合をリスト[a]で与えて、そこ…

Hindley/Milner type systemのこと

しばらく更新を怠っていました。今もまだ余り時間が取れないのですが、Doukaku.orgの問題を少し見る余裕が出てきました。平行して、いくつかHaskell関係の論文を読んでいたのですが、そのうちの一つ、Functional Programming with Overloading and Higher-Or…