Functional programming OCaml:带有条件的简单函数不';行不通

Functional programming OCaml:带有条件的简单函数不';行不通,functional-programming,ocaml,utop,Functional Programming,Ocaml,Utop,我是OCaml的新手,我正在学习它。我正在尝试执行一个简单的函数,该函数根据a和b的值计算(a+b)^2 我正在尝试一个如下所示的函数 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);; 所以我尝试了下面的一个: let a_squared_b (a:float) (b:float) : float = if(a<0 || b<

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

我正在尝试一个如下所示的函数

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);;
所以我尝试了下面的一个:

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);;

我不确定我做错了什么,如果有任何帮助,我将不胜感激。

简言之,OCaml对整数和浮点使用不同的运算符,即
(*)
而不是
(*)
(+)
而不是
(+)
,等等。您还应该使用
2.
而不是
2
来获取“变量”浮子式的


#设a_平方_b(a:float)(b:float):float=
如果(浮动=
#a_平方b 2.2。;;


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

感谢您的回答,即使经过此更正,当我执行a_square_b 2.2;;返回我float 0时,我仍然存在问题。不确定这是为什么…a_squared_b 2.0 2.0=0.0从定义中是明确的,因为从您正在计算的条件(a-b)^2当a和b大于或等于0.0时。
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