クラスメソッドを作成しましたが、次のタイプが必要です:
unit -> (dir -> 'b)
しかし、私の実際の方法:
method iter () = fun x -> match x with
| Up -> if (Stack.is_empty pz) then raise Stack.Empty else if (Stack.length pz = 1) then failwith "Cannot go up" else (ignore (Stack.pop pz) ; {< a = (Stack.top pz) >})
| Down(v) -> match (Stack.top pz) with
| Noeud(o, {contents = []}) -> raise Not_found
| Noeud(o, {contents = l}) -> if mem_assoc v l then ((Stack.push (assoc v l) pz) ; {< a = (Stack.top pz) >} ) else raise Not_found
タイプを持っていますunit -> dir -> 'b
最初のタイプになるようにするにはどうすればよいですか?
カスタムタイプは次のとおりです。
type 'a arbre = Noeud of 'a option ref * (char * 'a arbre) list ref
type dir = Up | Down of char
編集:特定のインターフェースに準拠できるようにするためにこれが必要であり、型の不一致のためにコンパイルされません。ありがとう!