繁体   English   中英

ocaml中的可选参数错误

[英]Optional Parameter error in ocaml

我正在尝试创建一个将采用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

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

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

OCaml中的布尔常量为truefalse

提供可选参数的语法类似于~i: (i * 2) ~i:是不能被分解的单个令牌。

除了这些小问题之外,这还是不错的代码。 (假设首先为您的向量提供了最低有效位。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM