OCaml错误表达式期望类型为int(混淆错误)

时间:2017-02-12 20:53:10

标签: types type-conversion ocaml ocamlbuild

我的代码:

let safe_log10 = function x -> if (x <= 0.) then None else Some (log10 x);;

使用输入-1.0,这会给出:

safe_log10 -1.0;;
Error: This expression has type float -> float option
       but an expression was expected of type int

但是,它适用于(-1.0)

# safe_log10 (-1.0);;
- : float option = None

为什么会发生这种情况,如何修复该功能以适用于safe_log10 -1.0?感谢。

1 个答案:

答案 0 :(得分:1)

-1.0写在一起并不重要,此-仍然是二元运算符,您的表达式看起来像function - float,没有意义。在OCaml中,与许多其他语言不同,二进制-只能应用于intint;即使对于花车,您也需要一个不同的运算符-.