blob: e586f520846b09b9d751eaabb86d069b602efa3d (
plain)
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
|
All:
- Finish guide.md
- test to check args set properly
- test to make sure slurp captures final newline
- make sure errors propagate/print properly when self-hosted
- change perf test to run for 10 seconds and then calculate number
of iterations per second
- redefine (defmacro!) as (def! (macro*))
- runtest expect fixes:
* stop using expect, so we can drop --raw option
- fix C#, VB
- fix long line splitting in runtest
- regular expression matching in runtest
- add re (use in rep) everywhere and use that (to avoid printing)
- Implement/fix interop
- Print full exception when test gets EOF from expect
- metadata on symbols
- metadata as a map only. ^ merges metadata in the reader itself.
Line numbers in metadata from reader.
- protocols!
- https://github.com/pixie-lang/pixie
- http://www.toccata.io/2015/01/Mapping/
- namespaces
- environments first class: *ENV*, *outer* defined by env-new
- namespaces is *namespaces* map in environment which maps namespace
names to other environments.
- def! become an alias for (env-set! *ENV* 'sym value)
- Namespace lookup: go up the environment hierarchy until
a *namespaces* map is found with the namespace name being
looked up. Then the symbol would be looked up starting in
the namespace environment. Need protocols first probably.
- Break out impl eval into step0.5
- Fix quasiquoting of vectors
- Get self-host working at earlier step:
- Move try* to step6
- Remove macros from mal
- multi-line REPL read
- loop/recur ?
- gensym reader inside quasiquote
- per impl tests for step5_tco
---------------------------------------------
Bash:
- explore using ${!prefix*} syntax (more like make impl)
- GC
C:
- come up with better way to do 20 vararg code
- GC: use http://www.hboehm.info/gc/
- fix mal/clojurewest2014.mal
C#:
- fix command line arg processing (doesn't run file specified)
- accumulates line breaks with mal/clojurewest2014.mal
- step9_interop:
http://www.ckode.dk/programming/eval-in-c-yes-its-possible/
Clojure:
- make indent consistent across steps (e.g. step5, step8)
- fix mal/clojurewest2014.mal
CoffeeScript:
- make target to compile to JS
- fix "user> " prompt with mal/clojurewest2014.mal
Go:
- consider variable arguments in places where it makes sense
https://gobyexample.com/variadic-functions
Haskell:
- TCO using seq/bang patterns:
http://stackoverflow.com/questions/9149183/tail-optimization-guarantee-loop-encoding-in-haskell
- immediately exits mal/clojurewest2014.mal
Java:
- Use gradle instead of mvn
http://blog.paralleluniverse.co/2014/05/01/modern-java/
- MAL formatting is a bit off with mal/clojurewest2014.mal
Javascript:
- interop: callbacks using Mal functions
- fix "user> " prompt with mal/clojurewest2014.mal
Lua:
- time-ms should get actual milliseconds
Make:
- allow '_' in make variable names
- hash-map with space in key string
- Fix: make -f stepA_mal.mk ../mal/step6_file.mal
(slurp "../tests/incA.mal")
(read-string "(+ 2 3)")
- errors should propagate up from within load-file
- GC: expore using "undefined" directive in Make 3.82
Mal:
- line numbers in errors
- step5_tco
miniMAL:
- figure out why {} literals are "static"/persistent
Perl:
- fix metadata on native functions
- implement conj
PHP:
- formatting messed up with mal/clojurewest2014.mal
Postscript:
- add negative numbers
- fix blank line after comments
- fix command line arg processing (doesn't run file specified)
- formatting messed up with mal/clojurewest2014.mal
Python:
- error: python ../python/stepA_mal.py ../mal/stepA_mal.mal ../mal/stepA_mal.mal
- interop tests
R:
- tracebacks in errors
- fix running from different directory
- formatting messed up with mal/clojurewest2014.mal
Racket
- metadata on collections
Ruby:
Rust:
- use built-in regex once fixed:
https://github.com/rust-lang/rust/issues/18034
https://github.com/rust-lang/rust/issues/18035
- fix 'make all' invocation of cargo build
- formatting messed up with mal/clojurewest2014.mal
Scala
- readline
- fix exception when finished running something on command line
VB.Net
- convert readline.cs to readline.vb
---------------------------------------------
Future Implementations:
- Ada (gnat)
- http://rosettacode.org/wiki/Regular_expressions#Ada
- C++
- Groovy
- http://groovy-lang.org/learn.html
- http://groovy-lang.org/structure.html
- Erlang
- F#
- Haxe
- http://api.haxe.org/
- http://haxe.us/haxe_tutorial.html
- Julia
- Nim
- Objective-C:
- Pascal:
sudo aptitude install fp-compiler-2.6.2
- VimL
- https://github.com/tpope/timl
- Tcl
- TeX/LaTeX
- Basic interpreter in TeX: http://ctanhg.scharrer-online.de/pkg/basix.html
- Cheat Sheet: http://www.stdout.org/~winston/latex/latexsheet.pd
- latex '\nonstopmode\input' blah.tex
|