0
我有這個非常簡單的遞歸函數,從char列表中向樹添加分支。如何傳遞遞歸函數的值而不是定義
type tree = Node of bool ref * (char * tree) list ref
let rec create_branch lc = function
[] -> Node(ref true, ref[])
| x :: l -> Node(ref false, ref [(x, (create_branch l))])
我希望它可以創建只包含一個分支樹,這將有炭過渡一堆「假」節點,直到這將是真正的最後一個節點。
但我發現了一個錯誤:
錯誤:此表達式類型(的char *(字符列表 - >樹))列表裁判 而是一種表達預計的類型(字符*樹)名單REF 類型字符列表 - >樹與類型樹不兼容
我想我明白,這意味着我的遞歸調用似乎,由於某種原因,被傳遞爲實際函數的引用(因此(char列表 - > tree)),而不是它的返回值,它只是一棵樹。
我想知道我在做什麼錯?
它的工作,或至少它解決了我的類型問題。爲了使實際的代碼工作可能仍然是一大堆工作,但你幫了很大忙。謝謝。 OCaml非常奇怪。 –