0
我想做一個函數遍歷二叉樹,驗證一些條件,然後返回一個布爾值。二叉樹 - > Bool函數
val valid : dtree -> bool
type dtree =
Decision of string * int * dtree * string * int * dtree
| Chance of string * int * dtree * string * int * dtree
| Outcome of int
;;
let rec valid dt =
match dt with
Decision(choiceL, costL, l, choiceR, costR, r) -> if choiceL=choiceR then false else valid l valid r
| Chance(eventL, probL, l, eventR, probR, r) -> if eventL=eventR && (probL + probR)<>100 then false else valid l valid r
| Outcome value -> true
;;
這給了我下面的錯誤:
Decision(choiceL, costL, l, choiceR, costR, r) -> if choiceL=choiceR then false else valid l **valid** r Error: This expression has type dtree -> 'a -> 'b -> 'c but an expression was expected of type 'a # Interrupted.
我沒有得到同樣的錯誤信息,你。您應該更仔細地複製和粘貼您的代碼。無論如何,「有效的有效r」顯然是錯誤的。 '有效的l'是一個布爾值。你可以邏輯地使用另一個布爾,比如'valid r',語法是'(valid r)&&(valid l)'。 –
謝謝,我會盡力的! – MMrj
感謝它解決了它xD !,我仍然是這個語言的開始x) – MMrj