ocaml中的可选参数错误

时间:2014-10-23 14:27:40

标签: ocaml optional-parameters

我正在尝试创建一个带有true或false向量的函数。此向量表示二进制数,我想将其转换为函数中的整数 这是我的代码

let rec int_of_vec x ?(i=1) = match x with
      [] -> 0
    | True::t -> (1*i) + int_of_vec t ~(i:(i*2))
    | False::t -> 0 + int_of_vec t ~(i:(i*2))
;;

但是我一直在处理可选参数时遇到错误 我不确定我到底做错了什么,因为我是Ocaml的新手

1 个答案:

答案 0 :(得分:0)

您正在使用可选参数来处理通常使用辅助函数处理的内容。对于更惯用的OCaml样式,您可能希望使用始终采用参数i的内部函数进行重写。

OCaml中的可选参数不能作为最后一个参数。如果将i作为函数的第一个参数,则编译器的投诉会减少。

OCaml中的布尔常量为truefalse

提供可选参数的语法类似于~i: (i * 2)~i:是一个无法拆分的令牌。

除了这些小问题,这是一个很好的代码。 (假设您的向量首先提供最低有效位。)