Minor clarifications
[jackhill/mal.git] / docs / TODO
1 ---------------------------------------------
2
3 All:
4 - Finish guide.md
5
6 - test that *ARGV* gets set properly
7 - test to make sure slurp captures final newline
8 - regular expression matching in runtest
9 - add re (use in rep) everywhere and use that (to avoid printing)
10 - per impl tests for step5_tco, or at least a better way of
11 enabling/disabling/tweaking per implementation
12 - fix stepA soft failures: lua matlab miniMAL perl racket
13
14 Other ideas for All:
15 - propagate/print errors when self-hosted
16 - redefine (defmacro!) as (def! (macro*))
17 - Fix/implement interop in more implementations
18
19 - metadata on symbols (as per Clojure)
20 - metadata as a map only. ^ merges metadata in the reader itself.
21 Line numbers in metadata from reader.
22 - protocols!
23 - https://github.com/pixie-lang/pixie
24 - http://www.toccata.io/2015/01/Mapping/
25 - namespaces
26 - environments first class: *ENV*, *outer* defined by env-new
27 - namespaces is *namespaces* map in environment which maps namespace
28 names to other environments.
29 - def! become an alias for (env-set! *ENV* 'sym value)
30 - Namespace lookup: go up the environment hierarchy until
31 a *namespaces* map is found with the namespace name being
32 looked up. Then the symbol would be looked up starting in
33 the namespace environment. Need protocols first probably.
34 - Fix quasiquoting of vectors
35
36 - multi-line REPL read
37 - loop/recur ?
38 - gensym reader inside quasiquote
39
40
41 ---------------------------------------------
42
43 Bash:
44 - explore using ${!prefix*} syntax (more like make impl)
45 - GC
46
47 C:
48 - come up with better way to do 20 vararg code
49 - GC: use http://www.hboehm.info/gc/
50 - fix mal/clojurewest2014.mal
51
52 C#:
53 - fix command line arg processing (doesn't run file specified)
54 - accumulates line breaks with mal/clojurewest2014.mal
55 - step9_interop:
56 http://www.ckode.dk/programming/eval-in-c-yes-its-possible/
57
58 Clojure:
59 - make indent consistent across steps (e.g. step5, step8)
60 - fix mal/clojurewest2014.mal
61
62 CoffeeScript:
63 - make target to compile to JS
64 - fix "user> " prompt with mal/clojurewest2014.mal
65
66 Go:
67 - consider variable arguments in places where it makes sense
68 https://gobyexample.com/variadic-functions
69
70 Haskell:
71 - TCO using seq/bang patterns:
72 http://stackoverflow.com/questions/9149183/tail-optimization-guarantee-loop-encoding-in-haskell
73 - immediately exits mal/clojurewest2014.mal
74
75 Java:
76 - Use gradle instead of mvn
77 http://blog.paralleluniverse.co/2014/05/01/modern-java/
78 - MAL formatting is a bit off with mal/clojurewest2014.mal
79
80 Javascript:
81 - interop: adopt techniques from miniMAL
82 - fix "user> " prompt with mal/clojurewest2014.mal
83
84 Lua:
85
86 Make:
87 - allow '_' in make variable names
88 - hash-map with space in key string
89 - Fix: make -f stepA_mal.mk ../mal/step6_file.mal
90 (slurp "../tests/incA.mal")
91 (read-string "(+ 2 3)")
92 - errors should propagate up from within load-file
93 - GC: expore using "undefined" directive in Make 3.82
94
95 Mal:
96 - line numbers in errors
97 - step5_tco
98
99 MATLAB:
100 - Port to support both GNU Octave and MATLAB
101
102 miniMAL:
103 - figure out why {} literals are "static"/persistent
104
105 Perl:
106 - fix metadata on native functions
107 - implement conj
108
109 PHP:
110 - formatting messed up with mal/clojurewest2014.mal
111
112 Postscript:
113 - add negative numbers
114 - fix blank line after comments
115 - fix command line arg processing (doesn't run file specified)
116 - formatting messed up with mal/clojurewest2014.mal
117
118 Python:
119 - interop tests
120
121 R:
122 - tracebacks in errors
123 - fix running from different directory
124 - formatting messed up with mal/clojurewest2014.mal
125
126 Racket
127 - metadata on collections
128
129 Ruby:
130
131 Rust:
132 - use built-in regex once fixed:
133 https://github.com/rust-lang/rust/issues/18034
134 https://github.com/rust-lang/rust/issues/18035
135 - fix 'make all' invocation of cargo build
136 - formatting messed up with mal/clojurewest2014.mal
137
138 Scala
139 - readline
140 - fix exception when finished running something on command line
141
142 VB.Net
143 - convert readline.cs to readline.vb
144
145 Vimscript:
146 - fix perf^vimscript when in docker (/dev/stdout permission
147 denied)
148