function is_sorted()

in src/c/order.php [36:57]


function is_sorted<Tv>(
  Traversable<Tv> $traversable,
  ?(function(Tv, Tv)[_]: num) $comparator = null,
)[ctx $comparator]: bool {
  $vec = Vec\cast_clear_legacy_array_mark($traversable);
  if (is_empty($vec)) {
    return true;
  }

  $comparator ??= (Tv $a, Tv $b) ==>
    /*HH_FIXME[4240] Comparison may not be useful on Tv*/$a <=> $b;

  $previous = firstx($vec);
  foreach ($vec as $next) {
    if ($comparator($next, $previous) < 0) {
      return false;
    }
    $previous = $next;
  }

  return true;
}