Вот мой код:
let avg l =
List.fold_left ( +. ) 0. l /. float (List.length l);;
let variability l =
let xbar = avg l in
let odp = (List.map (fun i -> ((float) i -. xbar) ** 2.0) l) in
let sum = List.fold_left ( +. ) 0. odp in
sum /. (float) length l;;
Ввод этого в верхний уровень приводит к следующему:
val avg : float list -> float = <fun>
# Characters 107-108:
let odp = (List.map (fun i -> ((float) i -. xbar) ** 2.0) l) in
^
Error: This expression has type float list but is here used with type
int list
Я пытался работать с этим в течение длительного времени, но я не могу понять, почему это приводит к ошибке. Он думает, что l
- это список int?
РЕШЕНИЕ: (снизу. Спасибо!)
let avg l =
List.fold_left ( +. ) 0. l /. float (List.length l);;
let variability l =
let xbar = avg l in
let odp = (List.map (fun i -> (i -. xbar) ** 2.0) l) in
let sum = List.fold_left ( +. ) 0. odp in
sum /. (float) (List.length l);;