osiire’s blog

ふしぎなそふとやさん

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

多相バリアントを使いこなそう(4)

前回までで多相バリアントの基本的な機能は説明してきました。そこで今回は、多相バリアントのとても重要な応用についてお話したいと思います。それは、場合分け構造の拡張問題です。 場合分け構造の拡張は難しい 例えば、次のようなコードがあったとします…

多相バリアントを使いこなそう(3)

さて、今日は多相バリアントの「三つの型」について紹介しようと思います。この「三つのの型」をうまく活用する事で、安全さと柔軟さと再利用性を同時に手に入れることができます。 三つの型 同じ`Aと`Bというタグを使っても、宣言できる多相バリアント型に…

多相バリアントを使いこなそう(2)

前回は、OCamlの多相バリアント型のタグは複数の多相バリアント型に属する事ができるというお話でした。では、この性質を応用するとどんな嬉しいことがあるのでしょうか?今日はまず、多相バリアントを組み合わせる場合のストーリーを挙げてみたいと思います…

多相バリアントを使いこなそう(1)

以前OCamlは学習コストが低いといいましたが、私のOCaml学習の中で唯一多相バリアントだけはその意味を理解するのに時間がかかりました。ただ、分かってみると単純な話で、誰かが噛み砕いて説明してくれれば回り道しなくてもよかったのではないかと悔やまれ…

知ってる?OCamlのオブジェクトってね...

多相レコードなんだ!普通のレコードって多相にならないよね!?例えば、 # type person = { name : string; age : int };; (* person型 *) type person = { name : string; age : int };; # type car = { name : string; doors : int };; (* car型 *) type ca…

知ってる?オブジェクトってね...

レコードと高階関数で書けるんだ!TAPLに載ってるのを読んで、へー(×2)と思ったので紹介するね!*1 # type t = { mutable name : string; mutable age : int };; type t = { mutable name : string; mutable age : int; } # type m = { get_name : unit -> …