0

私はいくつかのタイプを持っています:

type client =  {nom : nom_client; demande : demande_client}

type itineraire = {num : num_itineraire; 
                   capacite : capacite_itineraire; 
                   liste_clients : client list}

type plan = Vide | Ilist of itineraire list

引数を指定するだけなので、クライアントと旅程を宣言できます。ただし、変数を型プランとして宣言する方法がわかりません。

type plan には旅程のリストしか含まれていませんが、次のことを行っています。

let myPlan = [(an itineraire here)];;

プランではなく旅程リストを返します。

では、旅程リストの Ilist の変数を宣言するにはどうすればよいでしょうか。

4

2 に答える 2

2

型宣言で示されているように as パラメータIListを取り、 を返すコンストラクタを使用する必要があります。itineraire listplan

let my_plan = IList [foo; bar; baz]

プランに対応するリストを取得するには、このコンストラクターでパターン マッチも行う必要があることに注意してください。

let merge_plans p1 p2 = match p1, p2 with
  | p, Vide | Vide, p -> p
  | IList l1, IList l2 -> IList (l1 @ l2)

PS: 本当にこの大文字と小文字を区別する必要がありますか? プランを単にリストとして定義し、代わりに空のリストを使用できませんでしたVideか?

于 2013-06-12T14:47:46.130 に答える
1

私にはあなたが脱落したようIlistです。

let myPlan = Ilist [];

type のすべての値は、コンストラクターとしてor のplanいずれVideかを持ちます。Ilistそれが定義の意味です。

于 2013-06-12T14:47:45.047 に答える