Skip to content

Commit 8638ab4

Browse files
committed
Add typing.txt
1 parent ec158fb commit 8638ab4

File tree

1 file changed

+328
-0
lines changed

1 file changed

+328
-0
lines changed

timeseries-io/typing.txt

Lines changed: 328 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,328 @@
1+
A : Type
2+
----------------------
3+
InstantVector A : Type
4+
5+
6+
A : Type
7+
--------------------
8+
RangeVector A : Type
9+
10+
11+
Scalar : Type
12+
13+
14+
Bool : Type
15+
16+
17+
A : Type
18+
B : Type
19+
-------------
20+
(A, B) : Type
21+
22+
23+
Timestamp : Type
24+
25+
26+
Duration : Type
27+
28+
29+
t : A
30+
(x := t : A) |- e : B
31+
--------------------- ✔
32+
let x = t in e : B
33+
34+
35+
(x : A) |- t : B
36+
------------------ ✔
37+
\x -> t : A -> B
38+
39+
40+
t : (a, b)
41+
------------ ✔
42+
fst t : a
43+
44+
45+
t : (a, b)
46+
---------- ✔
47+
snd t : b
48+
49+
50+
a : A
51+
b : B
52+
--------------- ✔
53+
(a, b) : (A, B)
54+
55+
56+
a : Scalar
57+
b : Scalar
58+
-------------------- ✔
59+
eq_scalar a b : Bool
60+
61+
62+
a : Scalar
63+
b : Scalar
64+
------------------------ ✔
65+
not_eq_scalar a b : Bool
66+
67+
68+
a : Scalar
69+
b : Scalar
70+
-------------------- ✔
71+
lt_scalar a b : Bool
72+
73+
74+
a : Scalar
75+
b : Scalar
76+
--------------------- ✔
77+
lte_scalar a b : Bool
78+
79+
80+
a : Scalar
81+
b : Scalar
82+
-------------------- ✔
83+
gt_scalar a b : Bool
84+
85+
86+
a : Scalar
87+
b : Scalar
88+
--------------------- ✔
89+
gte_scalar a b : Bool
90+
91+
92+
a : Scalar
93+
b : Scalar
94+
----------------------- ✔
95+
add_scalar a b : Scalar
96+
97+
98+
a : Scalar
99+
b : Scalar
100+
----------------------- ✔
101+
sub_scalar a b : Scalar
102+
103+
104+
a : Scalar
105+
b : Scalar
106+
----------------------- ✔
107+
mul_scalar a b : Scalar
108+
109+
110+
a : Scalar
111+
b : Scalar
112+
----------------------- ✔
113+
div_scalar a b : Scalar
114+
115+
116+
a : Bool
117+
------------ ✔
118+
not a : Bool
119+
120+
121+
a : Bool
122+
b : Bool
123+
------------- ✔
124+
and a b : Bool
125+
126+
127+
a : Bool
128+
b : Bool
129+
------------- ✔
130+
or a b : Bool
131+
132+
133+
n integer // integer literal
134+
----------------------------------- ✔
135+
milliseconds n : Duration
136+
137+
138+
n integer // integer literal
139+
----------------------------------- ✔
140+
seconds n : Duration
141+
142+
143+
n integer // integer literal
144+
----------------------------------- ✔
145+
minutes n : Duration
146+
147+
148+
n integer // integer literal
149+
// Syntax hugar: <int>h ✗
150+
----------------------------------- ✔
151+
hours n : Duration
152+
153+
154+
epoch : Timestamp ✔
155+
156+
157+
now : Timestamp ✔
158+
159+
160+
t : Timestamp
161+
d : Duration
162+
---------------------- ✔
163+
rewind t d : Timestamp
164+
165+
166+
t : Timestamp
167+
d : Duration
168+
---------------------------- ✔
169+
fast_forward t d : Timestamp
170+
171+
172+
t : Timestamp
173+
------------------------------ ✔
174+
timestamp_to_scalar t : Scalar
175+
176+
177+
t : Bool
178+
------------------------- ✔
179+
bool_to_scalar t : Scalar
180+
181+
182+
// Given a continuous timeseries vector and an interval computes a discrete timeseries vector (range vector)
183+
s : Timestamp -> InstantVector a
184+
a : Timestamp
185+
b : Timestamp
186+
-------------------------------- ✔
187+
range a b : RangeVector a
188+
189+
190+
// More general version with a sampling rate
191+
s : Timestamp -> InstantVector a
192+
a : Timestamp
193+
b : Timestamp
194+
d : Duration
195+
-------------------------------- ✔
196+
range a b d : RangeVector a
197+
198+
199+
∅ labels
200+
201+
202+
s string
203+
s' string
204+
l̅s̅ labels
205+
-----------------
206+
(s, s') l̅s̅ labels
207+
208+
209+
// Takes a subset of the instant vector by keeping only those instants whose labels are in the provided set.
210+
v : InstantVector a
211+
l̅s̅ labels
212+
-------------------------------------- ✔
213+
filter_by_label v l̅s̅ : InstantVector a
214+
215+
216+
v : InstantVector Scalar
217+
------------------------ ✔
218+
max v : Scalar
219+
220+
221+
v : InstantVector Scalar
222+
------------------------ ✔
223+
avg : Scalar
224+
225+
226+
f : A -> Bool
227+
v : InstantVector A
228+
---------------------------- ✔
229+
filter f v : InstantVector A
230+
231+
232+
u : InstantVector A
233+
v : InstantVector B
234+
------------------------------- // 1-to-1 match is a assumed ✔
235+
join u v : InstantVector (A, B)
236+
237+
238+
f : A -> B
239+
v : InstantVector A
240+
------------------------- ✔
241+
map f u : InstantVector B
242+
243+
244+
t : Scalar
245+
-------------- ✔
246+
abs t : Scalar
247+
248+
249+
r : RangeVector Scalar
250+
--------------------------------- ✔
251+
increase r : InstantVector Scalar
252+
253+
254+
r : RangeVector Scalar
255+
----------------------------------- ✔
256+
rate r : InstantVector Scalar
257+
258+
259+
r : RangeVector Scalar
260+
-------------------------------------- ✔
261+
avg_over_time r : InstantVector Scalar
262+
263+
264+
r : RangeVector Scalar
265+
------------------------------------- ✔
266+
sum_over_time r : InstantVector Scalar
267+
268+
269+
q : Scalar // must be in range of [0; 1]
270+
r : RangeVector
271+
--------------------------------------------- ✔
272+
quantile_over_time q r : InstantVector Scalar
273+
274+
275+
u : InstantVector a
276+
v : InstantVector b
277+
---------------------------- ✗
278+
unless u v : InstantVector a
279+
280+
281+
// meta-level abbreviation
282+
a : InstantVector Scalar
283+
s : Scalar
284+
-------------------------------- ✔
285+
lte_instant_vector_scalar a s : InstantVector Scalar
286+
lte_instant_vector_scalar a s ≡ filter (\v -> v <= s) a
287+
288+
289+
// meta-level abbreviation
290+
v : InstantVector Scalar
291+
s : Scalar
292+
-------------------------------- ✗
293+
v <= bool s : InstantVector Bool
294+
v <= bool s ≡ (\x -> x <= s) v
295+
296+
297+
// meta-level definition (define via map)
298+
v : InstantVector Scalar
299+
s : Scalar
300+
---------------------------- ✗
301+
v / s : InstantVector Scalar
302+
303+
304+
// meta-level definition (define via map)
305+
v : InstantVector Scalar
306+
s : Scalar
307+
---------------------------- ✗
308+
v * s : InstantVector Scalar
309+
310+
311+
// meta-level definition (define via map)
312+
s : Scalar
313+
v : InstantVector Scalar
314+
----------------------------- ✗
315+
s - v : InstantVector Scalar
316+
317+
318+
// meta-level definition (define via map)
319+
v : InstantVector Bool
320+
--------------------------------- ✗
321+
toScalar v : InstantVector Scalar
322+
323+
324+
ls : Set Label
325+
q : Scalar
326+
v : InstantVector Scalar
327+
----------------------------------------- ✗
328+
quantile-by ls q v : InstantVector Scalar

0 commit comments

Comments
 (0)