簡體   English   中英

OCaml-錯誤的功能類型

[英]OCaml - Wrong function type

我做了一個類方法,我想有這種類型:

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

編輯:我需要它,以便它可以符合特定的接口,並且由於類型不匹配,它將無法編譯。 謝謝!

這不是問題。 unit -> (dir -> 'b)unit -> dir -> 'b在OCaml中是同一類型! (類型箭頭為右關聯)

您能告訴我們實際的錯誤消息,以便我們知道問題出在哪里嗎?

附錄:您真的嘗試過嗎? 如果沒有其他問題,那么你會發現它會只是工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM