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: adopt techniques from miniMAL - 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