/
vector.ss
99 lines (80 loc) · 2.09 KB
/
vector.ss
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#lang scheme/base
(require (for-syntax scheme/base)
"unet.ss"
"comprehensions-api.ss"
"constructor-api.ss"
"predicate-api.ss"
"selector-api.ss"
"function-api.ss"
"mutator-api.ss"
"iteration-api.ss"
"check-api.ss")
(require scheme/function)
;;; Comprehensions and Sequences
(define-comprehensions
(import 'vector
'in-vector
make-vector
vector?
vector-ref
vector-set!
vector-length)
(export for/vector
for/fold/vector
_
in-vector-reverse))
;;; Constructors
(define-constructors
(import make-vector
for/vector
in-vector
vector-length)
(export vector-ones
vector-zeros
vector-copy
vector-reverse))
;;; Predicates
(define-predicates
(import in-vector vector-length)
(export vector-null? vector-=))
;;; Selectors
(define-selectors
(import for/vector for/fold/vector in-vector vector-ref vector-length list->vector)
(export vector-select
vector-last
vector-find vector-findi
vector-find-first vector-find-firsti
vector-slice))
;;; Mutators
(define-mutators
(import vector-ref vector-set!)
(export vector-add1! vector-sub1!))
;;; Iterators
(define-iterators
(import for/fold/vector for/vector
in-vector
vector-length)
(export vector-map vector-mapi
vector-fold vector-foldi))
;;; General Functions
(define-functions
(import for/vector
in-vector
vector-set!
vector-ref
vector-length
vector-find-firsti)
(export vector* vector+ vector/ vector-
vector*s vector/s vector+s vector-s
vector-sum vector-product
vector-dot
vector-normalise
vector-max vector-maxi vector-min vector-mini
vector-adjoin vector-append
vector-remove vector-remove-first vector-removei))
;;; Checks
(define-checks
(import in-vector
vector-length)
(export check-vector=))
(provide (all-defined-out))