-
Notifications
You must be signed in to change notification settings - Fork 0
/
todo
51 lines (48 loc) · 1.59 KB
/
todo
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
Typechecking
casting
Primitives <-> Primitives
Objects -> Primitives
Primitives -/> Objects
Objects -/> Objects
C FFI types
Probably just int64_t, uint64_t, double and void*
Syntax
allow if {} as if {} else {default}
arrays
structs/enums
structural type system
remove void fields during compilation
(and but have them in the type system to allow separating enum types)
piping with |> and <|
two args with ||>?
map with ]>? ]=?
fold with `arr ]> default func`?
[> for right and ]> for left?
partial application with f[x, y] and even f[_, y]
enforce referential transparency by library design, making everything with a side effect require an environment token (ZST given by the main arguments)
extern function declarations
modules
anonymous functions for use in functions that take functions and to use folds as for loops
range syntax
from..to?
⋂ and ⋃ for object intersections/unions
\ for difference?
~= for approx equals for floating points ( abs(a-b) < 1e-6 )
Formatter
Linker
GC
Handle pointers to mid-array
Generational (= Having two heaps, one proper one and a bump-allocated one. Move stuff to the proper heap when it's survived a number of bump collections)
Prefetching memory?
JS backend?
The bad ideas
Arbirtary base int literals
1011b2 == 11b10
ABb16 == 171b10
34b5 == 19b10
To investigate
Must all loops be folds?
Reasonable syntax
Implicit removal of the fold start value for () returns?
What new greek letter for the `for` keyword
Replace all errors with error messages with a unique enum variant (there's a crate for deriving Error apparently)