--------------------------------------------- General: - add chat bot for #mal - move tokenizer.mal and reader.mal from malc along with ./examples/{equality,memoize,pprint,protocols}.mal and ./core.mal to ./lib directory - Finish guide.md All Implementations: - regular expression matching in runtest - add re (use in rep) everywhere and use that (to avoid printing) - per impl tests for step5_tco, or at least a better way of enabling/disabling/tweaking per implementation - fix stepA soft failures: lua matlab miniMAL perl racket Other ideas for All: - propagate/print errors when self-hosted - redefine (defmacro!) as (def! (macro*)) - Fix/implement interop in more implementations - metadata on symbols (as per Clojure) - 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. - multi-line REPL read - loop/recur ? - gensym reader inside quasiquote - standalone executable --------------------------------------------- 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/ C#: - accumulates line breaks with mal/clojurewest2014.mal - interop: http://www.ckode.dk/programming/eval-in-c-yes-its-possible/ Clojure: - fix "\/" exception in mal/clojurewest2014.mal CoffeeScript: - make target to compile to JS 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 ("\/" exception) 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 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 MATLAB: - Port to support both GNU Octave and MATLAB miniMAL: - figure out why {} literals are "static"/persistent ObjPascal: - verify that GC/reference counting works - fix comment by itself error at REPL Perl: - fix metadata on native functions - fix extra line breaks at REPL Postscript: - add negative numbers - fix blank line after comments - fix command line arg processing (doesn't run file specified) R: - tracebacks in errors - fix running from different directory Racket - metadata on collections Rust: - fix 'make all' invocation of cargo build Scala - readline - fix exception when finished running something on command line