diff --git a/src/data/vector/vectorFn.spec.ts b/src/data/vector/vectorFn.spec.ts index 903eee8..c64a51c 100644 --- a/src/data/vector/vectorFn.spec.ts +++ b/src/data/vector/vectorFn.spec.ts @@ -1,4 +1,4 @@ -import { head, intersperse, join, joinWith, numList, plVector, sum, prod, tail, reverse, slice } from './vectorFn' +import { head, intersperse, join, joinWith, numList, plVector, sum, prod, tail, reverse, sort, slice } from './vectorFn' import { plNumber } from '../number/numberFn' import { plString } from '../string/stringFn' @@ -75,6 +75,14 @@ describe('stdlib/data/vectorFn', () => { }) }) + describe('sort', () => { + it('should sort vector correctly', () => { + expect(sort(plVector(plNumber(3), plNumber(2), plNumber(1)))).toEqual( + plVector(plNumber(1), plNumber(2), plNumber(3)), + ) + }) + }) + describe('slice', () => { it('should slice vector correctly', () => { expect(slice(plVector(plString('a'), plString('b'), plString('c')), plNumber(1), plNumber(2))).toEqual( diff --git a/src/data/vector/vectorFn.ts b/src/data/vector/vectorFn.ts index 635fade..631ef13 100644 --- a/src/data/vector/vectorFn.ts +++ b/src/data/vector/vectorFn.ts @@ -58,6 +58,11 @@ export const reverse: (list: PLVector) => PLVector = (li return plVector(...(list.value.reverse() as StrictArray)) } +export const sort: (list: PLVector) => PLVector = (list) => { + typeCheck(PLVector, list) + return plVector(...(list.value.sort() as StrictArray)) +} + export const slice: (list: PLVector, start: PLNumber, end: PLNumber) => PLVector = ( list, start, @@ -80,5 +85,6 @@ export default { head, reverse, slice, + sort, tail, }