如何在 OCaml 中 return 浮动?

How to return a float in OCaml?

我已经在 OCaml 中编写了这个简单的函数来计算列表的总和:

let rec sum lst = 
     match lst with
     | [] -> 0.0
     | h :: t -> h + sum t

但是我在调​​用它时收到错误消息:

Error: This expression has type float
   but an expression was expected of type int

如何重写此函数,使其能够对浮点数列表求和,如果列表为空,return 零作为浮点数 (0.0)?

在 OCaml 中,整数数学是用 +-*/ 完成的。使用 +.-.*./.

完成浮点运算

你想要:

let rec sum lst = 
  match lst with
  | [] -> 0.0
  | h :: t -> h +. sum t

尽管您可以只写下面的内容。浮点文字上的尾随 0 不是必需的。这有 tail-recursive.

的好处
let sum = List.fold_left (+.) 0.