guide.md: step9,A stubs. TODO. More vector tests.
[jackhill/mal.git] / docs / TODO
1 All:
2 - rename stepA_interop to stepA_mal
3 - test to check args set properly
4 - test to make sure slurp captures final newline
5 - make sure errors propagate/print properly when self-hosted
6
7 - change perf test to run for 10 seconds and then calculate number
8 of iterations per second
9 - redefine (defmacro!) as (def! (macro*))
10 - runtest expect fixes:
11 - stop using expect, so we can drop --raw option
12 - fix long lines in runtext/expect
13 - regular expression matching in runtest
14 - add re (use in rep) everywhere and use that (to avoid printing)
15 - Implement/fix interop
16 - Print full exception when test gets EOF from expect
17
18 - metadata on symbols
19 - metadata as a map only. ^ merges metadata in the reader itself.
20 Line numbers in metadata from reader.
21 - protocols!
22 - https://github.com/pixie-lang/pixie
23 - http://www.toccata.io/2015/01/Mapping/
24 - namespaces
25 - environments first class: *ENV*, *outer* defined by env-new
26 - namespaces is *namespaces* map in environment which maps namespace
27 names to other environments.
28 - def! become an alias for (env-set! *ENV* 'sym value)
29 - Namespace lookup: go up the environment hierarchy until
30 a *namespaces* map is found with the namespace name being
31 looked up. Then the symbol would be looked up starting in
32 the namespace environment. Need protocols first probably.
33 - Break out impl eval into step0.5
34 - Fix quasiquoting of vectors
35
36 - Get self-host working at earlier step:
37 - Move try* to step6
38 - Remove macros from mal
39
40 - multi-line REPL read
41 - loop/recur ?
42 - gensym reader inside quasiquote
43
44 - per impl tests for step5_tco
45
46 ---------------------------------------------
47
48 Bash:
49 - explore using ${!prefix*} syntax (more like make impl)
50 - GC
51
52 C:
53 - come up with better way to do 20 vararg code
54 - GC: use http://www.hboehm.info/gc/
55 - fix mal/clojurewest2014.mal
56
57 C#:
58 - fix command line arg processing (doesn't run file specified)
59 - accumulates line breaks with mal/clojurewest2014.mal
60
61 Clojure:
62 - make indent consistent across steps (e.g. step5, step8)
63 - fix mal/clojurewest2014.mal
64
65 CoffeeScript:
66 - make target to compile to JS
67 - fix "user> " prompt with mal/clojurewest2014.mal
68
69 Go:
70 - consider variable arguments in places where it makes sense
71 https://gobyexample.com/variadic-functions
72
73 Haskell:
74 - TCO using seq/bang patterns:
75 http://stackoverflow.com/questions/9149183/tail-optimization-guarantee-loop-encoding-in-haskell
76 - immediately exits mal/clojurewest2014.mal
77
78 Java:
79 - Use gradle instead of mvn
80 http://blog.paralleluniverse.co/2014/05/01/modern-java/
81 - MAL formatting is a bit off with mal/clojurewest2014.mal
82
83 Javascript:
84 - interop: callbacks using Mal functions
85 - fix "user> " prompt with mal/clojurewest2014.mal
86
87 Lua:
88 - time-ms should get actual milliseconds
89
90 Make:
91 - allow '_' in make variable names
92 - hash-map with space in key string
93 - Fix: make -f stepA_interop.mk ../mal/step6_file.mal
94 (slurp "../tests/incA.mal")
95 (read-string "(+ 2 3)")
96 - errors should propagate up from within load-file
97 - GC: expore using "undefined" directive in Make 3.82
98
99 Mal:
100 - line numbers in errors
101 - step5_tco
102
103 Perl:
104 - fix metadata on native functions
105 - implement conj
106
107 PHP:
108 - formatting messed up with mal/clojurewest2014.mal
109
110 Postscript:
111 - add negative numbers
112 - fix blank line after comments
113 - fix command line arg processing (doesn't run file specified)
114 - formatting messed up with mal/clojurewest2014.mal
115
116 Python:
117 - error: python ../python/stepA_interop.py ../mal/stepA_interop.mal ../mal/stepA_interop.mal
118 - interop tests
119
120 R:
121 - tracebacks in errors
122 - fix running from different directory
123 - formatting messed up with mal/clojurewest2014.mal
124
125 Racket
126 - metadata on collections
127
128 Ruby:
129
130 Rust:
131 - use built-in regex once fixed:
132 https://github.com/rust-lang/rust/issues/18034
133 https://github.com/rust-lang/rust/issues/18035
134 - fix 'make all' invocation of cargo build
135 - formatting messed up with mal/clojurewest2014.mal
136
137 Scala
138 - readline
139 - fix exception when finished running something on command line
140
141 VB.Net
142 - convert readline.cs to readline.vb
143
144
145 ---------------------------------------------
146
147
148 Future Implementations:
149
150 - Ada (gnat)
151 - http://rosettacode.org/wiki/Regular_expressions#Ada
152
153 - C++
154
155 - Groovy
156 - http://groovy-lang.org/learn.html
157 - http://groovy-lang.org/structure.html
158
159 - Erlang
160
161 - F#
162
163 - Haxe
164 - http://api.haxe.org/
165 - http://haxe.us/haxe_tutorial.html
166
167 - Objective-C:
168
169 - Pascal:
170 sudo aptitude install fp-compiler-2.6.2
171
172 - VimL
173 - https://github.com/tpope/timl
174
175 - Tcl
176
177 - TeX/LaTeX
178 - Basic interpreter in TeX: http://ctanhg.scharrer-online.de/pkg/basix.html
179 - Cheat Sheet: http://www.stdout.org/~winston/latex/latexsheet.pd
180 - latex '\nonstopmode\input' blah.tex