Functional programming OCaml:带有条件的简单函数不';行不通
我是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<
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