说明
我的代码
type vector = float array
let norm_loop (vector: vector) =
let norm = ref 0.0 in
for x = 0 to (Array.length vector) - 1 do
norm := (!norm +. (vector.(x)*.vector.(x)))
done in
norm
但是当我输入uTop时,它说
# let norm_loop (vector: vector) =
let norm = ref 0.0 in
for x = 0 to (Array.length vector) - 1 do
norm := (!norm +. (vector.(x)*.vector.(x)))
done in
norm;;
Characters 4-13:
Warning 26: unused variable norm_loop.
- : float ref = {contents = 0.}
我不知道我为utop做错了什么,认为norm_loop是一个变量。我想做的就是返回norm
,但我似乎无法弄清楚如何做到这一点。
非常感谢任何帮助!
答案 0 :(得分:3)
你的第二个in
是多余的。没有let
与之相关。相反,你应该把它作为最后几行:
done;
!norm
请注意,您正在返回一个引用,但是您想返回一个float(我假设)。因此,您需要编写!norm
而不是norm
。
答案 1 :(得分:3)
请注意,您也可以使用Array.fold_left
来获得相同的结果:
let norm (vector : vector) =
Array.fold_left (fun acc v -> acc +. v *. v) 0.0 vector