からより多くの結果を得るためにタイプ「情報」:私は、インスタンスのためのいくつかの複雑なデータ型、定義した関数
type drawer =
{ ...
box: boxes list }
type table =
{ ...
drawers: drawer list }
type room =
{ ...
tables: table list }
をそして、私は同様の目的の一部の機能を定義しますが、引数の異なる種類の、のためにしたいですexemple:
val compare_size_rooms: room -> room -> bool (* true: bigger, false: smaller *)
val compare_size_tables: table -> table -> bool
val compare_size_boxes: box -> box -> bool
一つのことは、時には、原因の異なる構造に、2部屋/テーブル/ボックスは、比較にならないかもしれので、私はちょうど真または偽のほか、比較は私にいくつかの余分な情報を与えることを願っていることです。
私の質問は、それがタイプinfo
を定義する一般的な方法であるかどうか、次のとおりです。
type info =
| Incomparable_Tables_One_foldable_Another_non_foldable
| Incomparable_Tables_One_rectangle_Another_triangle
| Incomparable_Boxes_One_in_paper_Another_in_metal
| ...
そして、私は、次のような機能を作る:
val compare_size_rooms: room -> room -> bool * info (* true: bigger, false: smaller *)
val compare_size_tables: table -> table -> bool * info
val compare_size_boxes: box -> box -> bool * info
これらの関数では、私は分析しているので2の値を比較すると、bool
が大きいか小さいかを返します。そうでなければ、info
は分析の有益な情報を返します。
この構造はあまり一般的ではないようですが、誰かが普通のことを教えてもらえますか、それとももっと良い方法があれば同じことを実現できますか?
は、あなたが比較している2つのオブジェクトが比較できない場合、彼らが同等であったかのように、ブール値を返すことはお勧めできません非常に
あなたのコメントをお寄せいただきありがとうございます。なぜ、私はBatteriesライブラリやBatPervasivesに関するドキュメントをオンラインまたはOcamlマニュアルで見つけることができませんでしたか? – SoftTimur
'BatPervasives'の' OK'と 'Bad'もコンストラクタですか? – SoftTimur
ウェブ上で見つけるのは難しいから:-) http://thelema.github.com/batteries-included/hdoc/はいい場所です。 –