我的代码:
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
?感谢。
答案 0 :(得分:1)
将-
和1.0
写在一起并不重要,此-
仍然是二元运算符,您的表达式看起来像function - float
,没有意义。在OCaml中,与许多其他语言不同,二进制-
只能应用于int
和int
;即使对于花车,您也需要一个不同的运算符-.
。