Misc fixes and TODO updates.
[jackhill/mal.git] / docs / TODO
1 ---------------------------------------------
2
3 General:
4 - add chat bot for #mal
5 - move tokenizer.mal and reader.mal from malc along with
6 ./examples/{equality,memoize,pprint,protocols}.mal and
7 ./core.mal to ./lib directory
8
9 - Finish guide.md
10 - mention that identifier names are suggested. some have run
11 into collisions with READ,EVAL,PRINT in case insensitive
12 languages
13
14 All Implementations:
15 - regular expression matching in runtest
16 - add re (use in rep) everywhere and use that (to avoid printing)
17 - fix stepA soft failures: lua matlab miniMAL perl racket
18
19 Other ideas for All:
20 - propagate/print errors when self-hosted
21 - redefine (defmacro!) as (def! (macro*))
22 - Fix/implement interop in more implementations
23
24 - metadata on symbols (as per Clojure)
25 - metadata as a map only. ^ merges metadata in the reader itself.
26 Line numbers in metadata from reader.
27 - protocols!
28 - https://github.com/pixie-lang/pixie
29 - http://www.toccata.io/2015/01/Mapping/
30 - namespaces
31 - environments first class: *ENV*, *outer* defined by env-new
32 - namespaces is *namespaces* map in environment which maps namespace
33 names to other environments.
34 - def! become an alias for (env-set! *ENV* 'sym value)
35 - Namespace lookup: go up the environment hierarchy until
36 a *namespaces* map is found with the namespace name being
37 looked up. Then the symbol would be looked up starting in
38 the namespace environment. Need protocols first probably.
39
40 - multi-line REPL read
41 - loop/recur ?
42 - gensym reader inside quasiquote
43 - standalone executable
44
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
55 C#:
56 - accumulates line breaks with mal/clojurewest2014.mal
57 - interop: http://www.ckode.dk/programming/eval-in-c-yes-its-possible/
58
59 CoffeeScript:
60 - make target to compile to JS
61
62 Go:
63 - consider variable arguments in places where it makes sense
64 https://gobyexample.com/variadic-functions
65
66 Haskell:
67 - TCO using seq/bang patterns:
68 http://stackoverflow.com/questions/9149183/tail-optimization-guarantee-loop-encoding-in-haskell
69 - immediately exits mal/clojurewest2014.mal ("\/" exception)
70
71 Java:
72 - build step, don't use mvn in run script
73 - Use gradle instead of mvn
74 http://blog.paralleluniverse.co/2014/05/01/modern-java/
75
76 Javascript:
77 - interop: adopt techniques from miniMAL
78
79 Make:
80 - allow '_' in make variable names
81 - hash-map with space in key string
82 - errors should propagate up from within load-file
83 - GC: expore using "undefined" directive in Make 3.82
84
85 Mal:
86 - line numbers in errors
87 - step5_tco
88
89 miniMAL:
90 - figure out why {} literals are "static"/persistent
91
92 ObjPascal:
93 - verify that GC/reference counting works
94 - fix comment by itself error at REPL
95
96 plpgsql:
97 - maybe combine wrap.sh and run
98
99 Perl:
100 - fix metadata on native functions
101 - fix extra line breaks at REPL
102
103 Postscript:
104 - add negative numbers
105 - fix blank line after comments
106 - fix command line arg processing (doesn't run file specified)
107
108 Powershell:
109 - convert function with "abc_def" to "abc-def"
110 - remove extraneous return statements at end of functions
111 - remove unnecessary semi-colons
112 - use ArrayList instead of Array for performance
113 - new test to test Keys/keys as hash-map key
114 - test *? predicates with nil
115
116 R:
117 - tracebacks in errors
118 - fix running from different directory
119
120 Racket
121 - metadata on collections
122
123 Rust:
124 - fix 'make all' invocation of cargo build
125
126 Scala
127 - readline
128 - fix exception when finished running something on command line
129
130 VHDL:
131 - combine run_vhdl.sh and run
132
133 vimscript:
134 - combine run_vimscript.sh and run