forked from brownplt/pyret-lang
-
Notifications
You must be signed in to change notification settings - Fork 0
/
tuples-todo.txt
113 lines (89 loc) · 3.44 KB
/
tuples-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
[ ] Type checking
[x] Add a new type
[x] Add synth/check
[x] Add tests to tests/type-check/[good|bad]/
[ ] Add new pretty error
[ ] What happens if we have really big numbers? (Wf-error)
[x] Ask on Slack – what's the best place to cut off?
Should we formalize `MAX_SAFE_INTEGER` in the language for things like this?
[ ] Pick a number
[ ] Binding errors:
[ ] Highlight the bindings in the error message?
- problem is no location for the bindings themselves
[ ] Investigate highlighting of tuple index in errors (@jack)
[ ] *Refactor existing code to use tuples
[x] *in compiler
[x] *anf-loop-compiler
[x] *resolve-scope
[ ] CS173 interp-state assignment
[ ] CS75 assignment?
[ ] find other places?
[ ] Add helpers for tuples:
[x] is-tuple
[ ] *test is-tuple (in test-tuple file)
[ ] tuple-length?
[ ] test tuple-length?
[ ] Find out how to change and save Vim font, or get an editor that you like
better
[ ] Presentation
[ ] *Found new eachLoop primitive slide
[ ] Heroku setup - finish
[ ] Gdrive setup?
[ ] SSH forwarding/tunneling
[ ] Investigate perforamce tests
[ ] Write performance tests
Questions:
- Is forcing tuples to be size >= 2 a big win?
- What about doing all checks _before_ gets for a binding?
[ ] tuple-get-safe
[ ] More stack iteration primitives?
[ ] *Destructuring everywhere
[ ] Check for duplication in CreateMutableFromArray
[ ] Test
[ ] *Make more thing faster
______________________________________________________
TODONE:
[x] Make negative index be well-formed error
[x] Change name variable to be tup
[x] Make errors fancy
[x] Too big index
[x] Not a tuple
[x] Do "fancy-reason" as well
[x] Finish Equality
path correct? yes
[x] Add test(s) for nested tuple
[x] Add test(s) for cyclic tuple
(see http://www.pyret.org/docs/latest/equality.html)
[x] *Setup workflow
[x] Annotation checking
[x] Ann-mismatch for a single element
[x] *Length-mismatch for the whole tuple
[x] *Add tests to tests/pyret/tests/test-contracts.arr
[x] Binding
[x] tosource
[x] Add to resolve-scope
[x] Toplevel bindings of tuple destruction
- Bad error, needed it in ok-last, but didn't get any indication
of that
[x] Introduce intermediate binding for tuple value
- Done with make-atom
[x] Reversing/ordering/processing of tuple binds
[ ] Errors
[x] Add a new runtime function for checking binding mismatches
[x] Add a new let-binding in resolve-scope that calls the rt function
with the right information
[x] *Do the single-error version, but have all four of:
- source location
- tuple
- length
- desired-length
(A single error required a boostrap to introduce is-tuple)
[x] DOM - printing of tuples
[x] *Make a mutable version of eachLoop
[x] *test
Note: only have one try catch block (have a helper function that calls try cathc block that does all of that work
[x] *write tests that use both versions (getting old value, summing up, etc.)
- don't write tests that rely on the orders of the keys (sum, adding to a set)
- test-str-dict (can even check against all string-dict) (9 combos?)
[x] Teach highlighter what a semi-colon means
[x] Remove "hello" in output printing