Skip to content

Commit 801a105

Browse files
authored
feat: prod and revers functions
1 parent 21c5f1a commit 801a105

File tree

3 files changed

+20
-1
lines changed

3 files changed

+20
-1
lines changed

src/data/vector/PLVector.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ export class PLVector<Item extends VectorItem>
5050
return new PLVector<Item>(this.value.filter((item) => fn(item).toJS()))
5151
}
5252

53+
public reverse(): PLVector<Item> {
54+
return new PLVector<Item>(this.value.reverse())
55+
}
56+
5357
public reduce<Result>(init: Result, fn: (acc: Result, item: Item) => Result): Result {
5458
return this.value.reduce(fn, init) as Result
5559
}

src/data/vector/vectorFn.spec.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { head, intersperse, join, joinWith, numList, plVector, sum, prod, tail, slice } from './vectorFn'
1+
import { head, intersperse, join, joinWith, numList, plVector, sum, prod, tail, reverse, slice } from './vectorFn'
22
import { plNumber } from '../number/numberFn'
33
import { plString } from '../string/stringFn'
44

@@ -67,6 +67,14 @@ describe('stdlib/data/vectorFn', () => {
6767
})
6868
})
6969

70+
describe('reverse', () => {
71+
it('should reverse vector correctly', () => {
72+
expect(reverse(plVector(plString('a'), plString('b'), plString('c')))).toEqual(
73+
plVector(plString('c'), plString('b'), plString('a')),
74+
)
75+
})
76+
})
77+
7078
describe('slice', () => {
7179
it('should slice vector correctly', () => {
7280
expect(slice(plVector(plString('a'), plString('b'), plString('c')), plNumber(1), plNumber(2))).toEqual(

src/data/vector/vectorFn.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@ export const tail: <T extends PLBase>(list: PLVector<T>) => PLVector<T> = (list)
5353
return plVector(...(list.value.slice(1) as StrictArray<any>))
5454
}
5555

56+
export const reverse: <T extends PLBase>(list: PLVector<T>) => PLVector<T> = (list) => {
57+
typeCheck(PLVector, list)
58+
return plVector(...(list.value.reverse() as StrictArray<any>))
59+
}
60+
5661
export const slice: <T extends PLBase>(list: PLVector<T>, start: PLNumber, end: PLNumber) => PLVector<T> = (
5762
list,
5863
start,
@@ -67,11 +72,13 @@ export const slice: <T extends PLBase>(list: PLVector<T>, start: PLNumber, end:
6772

6873
export default {
6974
sum,
75+
prod,
7076
intersperse,
7177
join,
7278
'join-with': joinWith,
7379
'num-list': numList,
7480
head,
81+
reverse,
7582
slice,
7683
tail,
7784
}

0 commit comments

Comments
 (0)