/
TODO.txt
143 lines (111 loc) · 3.89 KB
/
TODO.txt
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# arza:lang:==, arza:lang:+ parses as operators :== and :+
# TODO if is_fals here you can reproduce reverted traceback error
in test_tuple
affirm:is_fals(#two `elem` a1)
// SERIOUS ERROR. 1 is on the stack
io:print("====", "---",
match 1
| x when (not (A `is` True)) and greater_then_ten(9) = #one
| x when greater_then_ten(11) = #two
)
FIX IT
fun f4 ((),) = ((()))
let fun _joiner((fst, snd),) =
str(fst) ++ "=" ++ repr(snd)
in "{"
++ string:join_with(_joiner, to_seq(self), ", ") ++
"}"
//MAKE FUNCTION MATCHING ERRORS USABLE
// partial applications or cuts
// see erlando for example
// simplify redirecting args
trait TCollection (
def put(key, value, self) -> _api:put(key, value, self)
def at(key, self) -> _api:at(key, self)
def del(key, self) -> _api:del(key, self)
def elem(key, self) -> _api:elem(key, self)
)
trait TCollection (
let put = api:put
)
// import grouping
import (
affirm
tests:lib_az:abc:module_ab as ab
tests:lib_az:abc:module_ab as ab2 (f_ab, f_ab_2)
tests:lib_az:abc:module_ab (f_ab, f_ab_2)
tests:lib_az:abc:module_ab as ab5 hiding (f_ab, CONST)
)
from (
tests:lib_az:abc:module_ab import (f_ab, f_ab_2, CONST as const)
tests:lib_az:efg:module_e import _
tests:lib_az:abc:module_ab import (f_ab as ab_3_f_ab)
tests:lib_az:abc:module_ab hide (CONST)
)
deep calls in datastructs data -> (1, record) == (1, record) NotIImplementedError in record._equal_(record)
we need to put process in every api call it is very very big annoying job/ it is better to rewrite all interpreter in
with this in mind
--------------------------------------------------
//TODO CONTEXSTS LIKE ELA
//TODO Symbols can also be created using symbol(),
//TODO which takes any number of arguments and creates a new symbol by concatenating their string representations together:
MAKE {} SYNTAX IN FIELDS AND CONSTRUCTING WITH KEYWORD ARGS
--------------------------------
PATTERN MATCHING NOW IS SHIT REWRITE IT
-------------------------------------------
PROPER OR CASES
match x with
| 1 | 2 | 3 -> printfn "Found 1, 2, or 3!"
| a -> printfn "%d" a
-----------------------------
MACROS
a lot of work and i dont know how to do it exactly
----------------------------------------------------
ERRORS
--------------------------
META
------------------------
REMOVE VOIDS AS VALUES IN DATASTRUCTS
----------------------
SEPARATE TOKEN STREAMS
--------------------------------------------------
ADD A WAY TO INTERRUPT SEQ LOOPS
--------------------------------------------------
SINGLE PASS AND DEF, MAYBE
-------------------
PATTERN_MATCH_ERRORS as ERRORS NOT TUPLES
--------------------------------------------------
NESTED BLOCK COMMENTS
--------------------------------------------------
PAREN is MISSING but we got NOT ALL LAYOUT IS CLOSED error
print (ts:into [] (ts:map fun _ x ->
if x > 4 ->
ts:reduced x
else ->
x
end) l
SINGLE VALUE ASSIGNMENT SUPPORT IN COMPILER
CAN`T DO THAT YOU LOOSE YOUR match semantics
x=1; x=1; x=2->error
INSTEAD determine if it first assignment or it needs check
--------------------------------
COMPILE FUNCTION CLAUSES INTO MATCH INSTEAD OF FUNC
--------------------------------
REMOVE NT_WHEN AFTER REFACTORING PATTERN COMPILER
--------------------------------
ADD SUPPORT FOR | IN TRAIT STATEMENT DEFS
--------------------------------
THINK ABOUT DEFAULT VALUES
--------------------------------
NO AUTO IMPORT
-compile({no_auto_import,[max/2]}).
-compile({no_auto_import,[min/2]})
---------------------------------------
FIXME
this is error prone code, currently branches not merged because
distinction goes with variable names and a1 != b1
match (1,2)
| a1 -> a1.0
| b1 -> a1.1
--------------------------------
---