# String

This is a specialized module for `Belt_SortArray`

, the docs in that module also
applies here, except the comparator is fixed and inlined

## element

`type element = string`

## strictlySortedLength

`let strictlySortedLength: array<element> => int`

The same as `Belt_SortArray.strictlySortedLength`

except the comparator is fixed

**return** `+n`

means increasing order `-n`

means negative order

## isSorted

`let isSorted: array<element> => bool`

`sorted(xs)`

return true if `xs`

is in non strict increasing order

## stableSortInPlace

`let stableSortInPlace: array<element> => unit`

The same as `Belt_SortArray.stableSortInPlaceBy`

except the comparator is fixed

## stableSort

`let stableSort: array<element> => array<element>`

The same as `Belt_SortArray.stableSortBy`

except the comparator is fixed

## binarySearch

`let binarySearch: (array<element>, element) => int`

If value is not found and value is less than one or more elements in array, the negative number returned is the bitwise complement of the index of the first element that is larger than value.

If value is not found and value is greater than all elements in array, the negative number returned is the bitwise complement of (the index of the last element plus 1)

for example, if `key`

is smaller than all elements return `-1`

since `lnot (-1) = 0`

if `key`

is larger than all elements return `- (len + 1)`

since `lnot (-(len+1)) = len`

## union

```
let union: (
array<element>,
int,
int,
array<element>,
int,
int,
array<element>,
int,
) => int
```

`union(src, src1ofs, src1len, src2, src2ofs, src2len, dst, dstofs, cmp)`

assume
`src`

and `src2`

is strictly sorted. for equivalent elements, it is picked from
`src`

also assume that `dst`

is large enough to store all elements

## intersect

```
let intersect: (
array<element>,
int,
int,
array<element>,
int,
int,
array<element>,
int,
) => int
```

## diff

```
let diff: (
array<element>,
int,
int,
array<element>,
int,
int,
array<element>,
int,
) => int
```