我是OCaml的新手,我正在学习它。我正在尝试执行一个简单的函数,根据(a+b)^2
和(a-b)^2
a
或b
我正在尝试使用如下所示的功能
let a_squared_b a b =
if(a<0 || b<0) then
(a**2 + b**2 + 2*a*b)
else
(a**2 + b**2 - 2*a*b);;
返回警告
Error: This expression has type int but
an expression was expected of type float
所以我尝试了下面的那个:
let a_squared_b (a:float) (b:float) : float =
if(a<0 || b<0)
then (a**2 + b**2 + 2*a*b)
else (a**2 + b**2 - 2*a*b);;
这也警告了一些事情。因此,我继续检查该函数是否起作用,但它返回错误的结果 -
a_squared_b 2 2;;
- : int = 0
我不确定我做错了什么,非常感谢任何帮助
答案 0 :(得分:2)
简而言之,OCaml对整数和浮点数使用不同的运算符,即( *. )
代替( * )
,(+.)
代替(+)
等。此外,您应该使用{{1}而不是2.
来获取float类型的“变量”。
2
您可以获得更多信息,例如there