let pts = [(0, 0); (4, 0); (4, 3); (2, 5); (0, 3)]

let polygon_2area pts =
  let arr = Array.of_list pts in
  let n = Array.length arr in
  let acc = ref 0 in
  for i = 0 to n - 1 do
    let (x1, y1) = arr.(i) in
    let (x2, y2) = arr.((i + 1) mod n) in
    acc := !acc + x1 * y2 - x2 * y1
  done;
  let a = !acc in
  if a < 0 then - a else a

;;

polygon_2area pts
