Ocaml嵌套函数

时间:2015-03-29 03:41:58

标签: ocaml

有人可以解释当你有嵌套函数时使用的语法吗?

例如,我有一个外部和一个内部递归函数。

let rec func1 list = match list with
[] -> []
|(head::tail) ->
let rec func2 list2 = match list2 with
...
;;

我花了一整天的时间试图解决这个问题,而且我总是感到厌倦"语法错误"。

1 个答案:

答案 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嵌套在另一个内部尤其困难。这可能是您的实际问题,而不是嵌套函数。