用于计算均值和标准差的代码是如何工作的?
问题描述:
我不太明白下面的代码,它计算数字列表的平均值和标准偏差:用于计算均值和标准差的代码是如何工作的?
let stats l =
let rec helper rest n sum sum_squares =
match rest with
| [] -> let nf = float_of_int n in
(sum /. nf, sqrt (sum_squares /. nf))
| h :: t ->
helper t (n+1) (sum+.h) (sum_squares +. (h*.h)) in
helper l 0 0.0 0.0;;
例如:
要其解释响应
val mean : float = 3.
val sd : float = 3.3166247903554
In
helper t (n+1) (sum+.h) (sum_squares +. (h*.h)) in
helper l 0 0.0 0.0;;
in
和helper l 0 0.0 0.0
是什么意思?
谢谢。
答
定义分解成碎片这样本身
let stats l =
let rec helper rest n sum sum_squares =
(* Definition of helper *)
in
helper l 0 0.0 0.0
关键字in
并不意味着什么。它符合let
。您所说的in
与定义为helper
的let
一起使用。所以用英文说就是let
helper
定义如下in
helper l 0 0.0 0.0
。
表达式helper l 0 0.0 0.0
是对由let
定义的helper
函数的调用。
因此,在更简单的英语中,它将“将帮助器定义为以下函数,然后使用参数l 0 0.0 0.0
调用帮助器。”