有人可以解释当你有嵌套函数时使用的语法吗?
例如,我有一个外部和一个内部递归函数。
let rec func1 list = match list with
[] -> []
|(head::tail) ->
let rec func2 list2 = match list2 with
...
;;
我花了一整天的时间试图解决这个问题,而且我总是感到厌倦"语法错误"。
答案 0 :(得分:3)
您没有显示足够的错误代码。
这是一个有效的例子:
# let f x =
let g y = y * 5 in
g (x + 1);;
val f : int -> int = <fun>
# f 14;;
- : int = 75
<强>更新强>
在习惯OCaml语法之前可能有用的东西是使用大量额外的括号:
let rec f y x =
match x with
| h :: t -> (
let incr v = if h = y then 1 + v else v in
incr (f y t)
)
| _ -> (
0
)
在不做这种事情的情况下,将一个match
嵌套在另一个内部尤其困难。这可能是您的实际问题,而不是嵌套函数。