OCaml:带条件的简单函数不起作用

时间:2014-03-10 14:41:40

标签: functional-programming ocaml utop

我是OCaml的新手,我正在学习它。我正在尝试执行一个简单的函数,根据(a+b)^2(a-b)^2

的值计算ab

我正在尝试使用如下所示的功能

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         

我不确定我做错了什么,非常感谢任何帮助

1 个答案:

答案 0 :(得分:2)

简而言之,OCaml对整数和浮点数使用不同的运算符,即( *. )代替( * )(+.)代替(+)等。此外,您应该使用{{1}而不是2.来获取float类型的“变量”。

2

您可以获得更多信息,例如there