发布
社区首页 >问答首页 >这个计算均值和标准差的代码是如何工作的?

这个计算均值和标准差的代码是如何工作的?
EN

Stack Overflow用户
提问于 2017-09-03 01:35:15
回答 1查看 264关注 0票数 0

我不太明白下面的代码,它计算数字列表的平均偏差和标准差:

代码语言:javascript
代码运行次数:0
复制
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;;

例如:

代码语言:javascript
代码运行次数:0
复制
let (mean, sd) = stats [1.; 2.; 3.; 4.; 5.];;

解释器所响应的

代码语言:javascript
代码运行次数:0
复制
val mean : float = 3.
val sd : float = 3.3166247903554

在……里面

代码语言:javascript
代码运行次数:0
复制
      helper t (n+1) (sum+.h) (sum_squares +. (h*.h)) in
  helper l 0 0.0 0.0;;

inhelper l 0 0.0 0.0在这里是什么意思?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-03 04:00:27

这个定义被分解成如下的片段

代码语言:javascript
代码运行次数: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与定义helperlet一起使用。因此,在英语中,let helper被定义为下面的in helper l 0 0.0 0.0

表达式helper l 0 0.0 0.0是对let定义的helper函数的调用。

因此,在更简单的英语中,它说:“将helper定义为以下函数,然后使用参数l 0 0.0 0.0调用helper。”

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46019547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档