Normalise a Vector using the Standard Library
    Task
    
Mathematics / Vector & Matrix Operations / Normalise a Vector
No packages used
This recipe uses only the OCaml Standard Library.Code 
  
  
  
    sum returns the sum of all float type elements in the list lst.
let sum lst = List.fold_left ( +. ) 0. lst
Returns the magnitude for a sum of squares sqs.
let magnitude sqs = Float.sqrt (sum sqs)
normalize accepts a list v of float values and returns the corresponding unit vector as a list.
let normalize v =
  let sqs = List.map (fun x -> x *. x) v in
  let m = magnitude sqs in
  List.map (fun x -> x /. m) v
Example use.
Using the format string "%.2f", the float values are rounded to the
2nd decimal place for readability.
let () =
  let vector = [4.;6.;-1.]
  let vhat = normalize vector;;
  List.iter (Printf.printf "%.2f ") vhat