From 6a0720fe5046624d65aa4b9f37e9b44d0fb19719 Mon Sep 17 00:00:00 2001 From: vektor8891 Date: Tue, 14 Jun 2022 02:59:22 -0400 Subject: [PATCH] sort vectors --- src/data/vector/vectorFn.spec.ts | 10 +++++++++- src/data/vector/vectorFn.ts | 6 ++++++ 2 files changed, 15 insertions(+), 1 deletion(-) 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, }