我不太了解以下代码,它会计算数字列表的平均值和标准差:
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;;
例如:
let (mean, sd) = stats [1.; 2.; 3.; 4.; 5.];;
口译员回应
val mean : float = 3.
val sd : float = 3.3166247903554
在
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
在这里意味着什么?
感谢。
答案 0 :(得分:1)
该定义分为如此
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
与定义let
的{{1}}一致。所以在英语中,它将 helper
let
定义为以下 helper
in
。
表达式helper l 0 0.0 0.0
是对helper l 0 0.0 0.0
定义的helper
函数的调用。
所以在更简单的英语中,它说“将助手定义为以下函数,然后使用参数let
调用助手。”