ИнструкцииКак перебрать массив в Ocaml, чтобы вернуть значение?
- Initialize нормой 0,0
- перебрать массив
- добавить в норме квадрат текущий компонент массива
- возвращение норма
Мой код
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
, но я не могу понять, как это сделать.
Любая помощь была бы принята с благодарностью!
Абсолютно, используя складку гораздо более идиоматических OCaml. Одной из причин изучения OCaml является просмотр силы неизменяемых данных (без ссылок) и функций более высокого порядка (например, складки). –