yorick: Fix evaluation of empty vectors in steps 2 and 3
[jackhill/mal.git] / docs / TODO
CommitLineData
14ab099c
NB
1In process/stepA.gliffy, add inc and remove *gensym-counter*.
2Then refresh the .png files.
3
861da5d6
JM
4---------------------------------------------
5
eaa6ceb4
JM
6General:
7 - add chat bot for #mal
3e9b89d4 8 - move tokenizer.mal and reader.mal from malc to ./lib directory
eaa6ceb4 9
2ab1e584 10 - Finish guide.md
e17aef04
JM
11 - mention that identifier names are suggested. some have run
12 into collisions with READ,EVAL,PRINT in case insensitive
13 languages
dd4020b9
JM
14 - simplify: "X argument (list element Y)" -> ast[Y]
15 - more clarity about when to peek and poke in read_list and
16 read_form
17 - tokenizer: use first group rather than whole match (to
18 eliminate whitespace/commas)
2ab1e584 19
eaa6ceb4 20All Implementations:
9d42904e 21 - regular expression matching in runtest
96f1845a 22 - add re (use in rep) everywhere and use that (to avoid printing)
861da5d6 23 - fix stepA soft failures: lua matlab miniMAL perl racket
54c75382 24
8569b2af
JM
25Other ideas for All:
26 - propagate/print errors when self-hosted
27 - redefine (defmacro!) as (def! (macro*))
28 - Fix/implement interop in more implementations
29
30 - metadata on symbols (as per Clojure)
ffd31966
JM
31 - metadata as a map only. ^ merges metadata in the reader itself.
32 Line numbers in metadata from reader.
96f1845a
JM
33 - protocols!
34 - https://github.com/pixie-lang/pixie
9d42904e 35 - http://www.toccata.io/2015/01/Mapping/
ffd31966
JM
36 - namespaces
37 - environments first class: *ENV*, *outer* defined by env-new
38 - namespaces is *namespaces* map in environment which maps namespace
39 names to other environments.
40 - def! become an alias for (env-set! *ENV* 'sym value)
41 - Namespace lookup: go up the environment hierarchy until
42 a *namespaces* map is found with the namespace name being
43 looked up. Then the symbol would be looked up starting in
44 the namespace environment. Need protocols first probably.
60154d24 45
b8ee29b2
JM
46 - multi-line REPL read
47 - loop/recur ?
b8ee29b2 48 - gensym reader inside quasiquote
eaa6ceb4 49 - standalone executable
b8ee29b2 50
01c97316 51
31690700
JM
52---------------------------------------------
53
f1b72c6a 54Bash:
718887c3 55 - explore using ${!prefix*} syntax (more like make impl)
6301e0b6 56 - GC
31690700
JM
57
58C:
59 - come up with better way to do 20 vararg code
60
afde2df0 61C#:
9d42904e 62 - accumulates line breaks with mal/clojurewest2014.mal
eaa6ceb4 63 - interop: http://www.ckode.dk/programming/eval-in-c-yes-its-possible/
afde2df0 64
b8ee29b2
JM
65CoffeeScript:
66 - make target to compile to JS
67
af8fdff4 68Go:
af8fdff4
JM
69 - consider variable arguments in places where it makes sense
70 https://gobyexample.com/variadic-functions
71
b76aa73b 72Haskell:
96f1845a
JM
73 - TCO using seq/bang patterns:
74 http://stackoverflow.com/questions/9149183/tail-optimization-guarantee-loop-encoding-in-haskell
eaa6ceb4 75 - immediately exits mal/clojurewest2014.mal ("\/" exception)
b76aa73b 76
f1b72c6a 77Java:
e17aef04 78 - build step, don't use mvn in run script
3b655472
JM
79 - Use gradle instead of mvn
80 http://blog.paralleluniverse.co/2014/05/01/modern-java/
f1b72c6a
JM
81
82Javascript:
612bfe4a 83 - interop: adopt techniques from miniMAL
31690700
JM
84
85Make:
31690700 86 - allow '_' in make variable names
5e02d695 87 - hash-map with space in key string
31690700 88 - errors should propagate up from within load-file
130fdf5d 89 - GC: explore using "undefine" directive in Make 3.82
31690700 90
31690700
JM
91Mal:
92 - line numbers in errors
60154d24 93 - step5_tco
31690700 94
5351b94a
JM
95miniMAL:
96 - figure out why {} literals are "static"/persistent
97
eaa6ceb4
JM
98ObjPascal:
99 - verify that GC/reference counting works
100 - fix comment by itself error at REPL
101
e17aef04
JM
102plpgsql:
103 - maybe combine wrap.sh and run
104
b5dedee0 105Perl:
3b655472 106 - fix metadata on native functions
eaa6ceb4 107 - fix extra line breaks at REPL
60154d24
JM
108
109Postscript:
3b655472 110 - add negative numbers
96f1845a 111 - fix blank line after comments
9d42904e 112 - fix command line arg processing (doesn't run file specified)
f1b72c6a 113
e17aef04
JM
114Powershell:
115 - convert function with "abc_def" to "abc-def"
116 - remove extraneous return statements at end of functions
117 - remove unnecessary semi-colons
118 - use ArrayList instead of Array for performance
119 - new test to test Keys/keys as hash-map key
120 - test *? predicates with nil
121
9b3362e8 122R:
9b3362e8 123 - tracebacks in errors
96f1845a 124 - fix running from different directory
9d42904e
JM
125
126Racket
127 - metadata on collections
9b3362e8 128
b8ee29b2 129Rust:
9d42904e 130 - fix 'make all' invocation of cargo build
96f1845a
JM
131
132Scala
96f1845a 133 - readline
9d42904e 134 - fix exception when finished running something on command line
e17aef04
JM
135
136VHDL:
137 - combine run_vhdl.sh and run
138
139vimscript:
140 - combine run_vimscript.sh and run