[英]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中的布尔常量为true
和false
。
提供可选参数的语法类似于~i: (i * 2)
。 ~i:
是不能被分解的单个令牌。
除了这些小问题之外,这还是不错的代码。 (假设首先为您的向量提供了最低有效位。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.