簡體   English   中英

OCaml:帶條件的簡單函數不起作用

[英]OCaml : Simple function with conditionals doesn't work

我是OCaml的新手,我正在學習它。 我試圖執行一個簡單的函數,根據ab的值計算(a+b)^2(ab)^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);;

它會返回一個警告

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         

我不確定我做錯了什么,任何幫助都將不勝感激

簡而言之,OCaml對整數和浮點數使用不同的運算符,即( *. )代替( * )(+.)代替(+)等。另外,你應該使用2.而不是2來獲得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);; val a_squared_b : float -> float -> float = <fun>
# a_squared_b 2. 2.;;

您可以獲得更多信息,例如, 那里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM