[英]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
如何重写此函数,以便它能够对浮点列表求和并在列表为空时返回零作为浮点 (0.0)?
在 OCaml 中,整数数学是用+
、 -
、 *
和/
完成的。 浮点数学是用+.
, -.
, *.
, 和/.
你要:
let rec sum lst =
match lst with
| [] -> 0.0
| h :: t -> h +. sum t
尽管您可以只写以下内容。 浮点文字的尾随0
不是必需的。 这具有尾递归的好处。
let sum = List.fold_left (+.) 0.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.