【发布时间】:2014-03-18 23:07:27
【问题描述】:
我的代码中有一个递归函数,如下所示:
let rec func (a,b)
match (a,b) with
| condition 1 -> func a+1 b
| condition 2 -> print "%s" done
| _ then func a b+1 //<-- It enters here after going into the else ()!!
if a = b then func 0 0
else ()
问题是,当匹配部分结束时,它转到 if 语句并且不匹配它,这很好。所以它转到“else ()”并应该退出递归,但它会返回到|_ -> print func a b+1。为什么会发生这种情况?
【问题讨论】:
-
您期望什么行为?你能提供一个最小的工作示例吗?
-
我被你的代码弄糊涂了。由于很多原因,这不应该编译。第一行没有等号。它需要一个元组,但是您在递归中传递了两个参数。您的匹配需要一个元组,但条件中没有逗号,最后一个匹配没有
->符号。