diff --git a/.gitignore b/.gitignore index c1371974..54802ca4 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ .cargo .config .mal-history +.mal_history .crystal .lein .m2 @@ -12,138 +13,10 @@ .npm .node-gyp package-lock.json -.elm */experiments -*/node_modules -*.o -*.pyc -*/step0_repl -*/step1_read_print -*/step2_eval -*/step3_env -*/step4_if_fn_do -*/step5_tco -*/step6_file -*/step7_quote -*/step8_macros -*/step9_try -*/stepA_mal -*/mal +node_modules */notes logs old - -ada/obj/ -awk/mal.awk -bash/mal.sh -clojure/mal.jar -clojure/target -clojure/.lein-repl-history -coffee/mal.coffee -cs/*.exe -cs/*.dll -cs/*.mdb -d/*.o -elixir/_build -elixir/deps -elixir/erl_crash.dump -elixir/*.ez -erlang/ebin -erlang/.rebar -erlang/src/*.beam -es6/mal.js -es6/.esm-cache -factor/mal.factor -fantom/lib -forth/mal.fs -fsharp/*.exe -fsharp/*.dll -fsharp/*.mdb -go/step* -groovy/*.class -groovy/mal.jar -haskell/*.hi -haskell/*.o -haxe/*.n -haxe/*.py -haxe/cpp/ -haxe/*.js -java/mal.jar -java/target/ -java/dependency-reduced-pom.xml -.npm/ -.node-gyp/ -js/mal.js -js/web/mal.js -kotlin/*.jar -kotlin/.idea -kotlin/*.iml -lua/lib -lua/linenoise.so -lua/mal.lua -make/mal.mk -mal/mal.mal -matlab/octave-workspace -miniMAL/mal.json -nim/nimcache* -objc/*.d -ocaml/*.cmi -ocaml/*.cmo -ocaml/*.swp -ocaml/*.cmx -ocaml/*.o -ocaml/mal_lib.* -objpascal/*.o -objpascal/*.ppu -objpascal/pas-readline -objpascal/regexpr/Source/RegExpr.ppu -perl/mal.pl -perl6/.precomp/ -php/mal.php -php/mal-web.php -ps/mal.ps -python/mal.pyz -r/mal.r -ruby/mal.rb -.cargo/ -rust/target/ -rust/Cargo.lock -rust/.cargo -r/lib -scala/mal.jar -scala/target -scala/project -skew/*.js -tcl/mal.tcl -vb/*.exe -vb/*.dll -vimscript/mal.vim -clisp/*.fas -clisp/*.lib -basic/step0_repl.bas -basic/step1_read_print.bas -basic/step2_eval.bas -basic/step3_env.bas -basic/step4_if_fn_do.bas -basic/step5_tco.bas -basic/step6_file.bas -basic/step7_quote.bas -basic/step8_macros.bas -basic/step9_try.bas -basic/stepA_mal.bas -basic/*.prg -common-lisp/*.fasl -common-lisp/*.lib -common-lisp/images/* -common-lisp/hist/* -livescript/*.js -!livescript/node_readline.js -livescript/node_modules -elm/node_modules -elm/elm-stuff -elm/*.js -!elm/node_readline.js -!elm/bootstrap.js -wasm/*.wat -wasm/*.wasm +tmp/ diff --git a/.travis_test.sh b/.travis_test.sh index e9b48d43..3d1d1078 100755 --- a/.travis_test.sh +++ b/.travis_test.sh @@ -7,7 +7,7 @@ IMPL=${2} # Environment variable configuration BUILD_IMPL=${BUILD_IMPL:-${IMPL}} -TEST_OPTS="${TEST_OPTS} --debug-file ../${ACTION}.err" +TEST_OPTS="${TEST_OPTS} --debug-file ../../${ACTION}.err" if [ "${DO_SELF_HOST}" ]; then MAL_IMPL=${IMPL} @@ -55,9 +55,9 @@ build) # rpython often fails on step9 in compute_vars_longevity # so build step9, then continue with the full build if [ "${BUILD_IMPL}" = "rpython" ]; then - ${MAKE} -C "${BUILD_IMPL}" step9_try || true + ${MAKE} -C "impls/${BUILD_IMPL}" step9_try || true fi - ${MAKE} -C ${BUILD_IMPL} + ${MAKE} -C "impls/${BUILD_IMPL}" ;; test|perf) [ "${ACTION}" = "perf" ] && STEP= diff --git a/Makefile b/Makefile index fbaaf6cc..77b11fc3 100644 --- a/Makefile +++ b/Makefile @@ -163,110 +163,110 @@ endif # Implementation specific utility functions # -basic_STEP_TO_PROG_cbm = basic/$($(1)).bas -basic_STEP_TO_PROG_qbasic = basic/$($(1)) +basic_STEP_TO_PROG_cbm = impls/basic/$($(1)).bas +basic_STEP_TO_PROG_qbasic = impls/basic/$($(1)) -clojure_STEP_TO_PROG_clj = clojure/target/$($(1)).jar -clojure_STEP_TO_PROG_cljs = clojure/src/mal/$($(1)).cljc +clojure_STEP_TO_PROG_clj = impls/clojure/target/$($(1)).jar +clojure_STEP_TO_PROG_cljs = impls/clojure/src/mal/$($(1)).cljc -haxe_STEP_TO_PROG_neko = haxe/$($(1)).n -haxe_STEP_TO_PROG_python = haxe/$($(1)).py -haxe_STEP_TO_PROG_cpp = haxe/cpp/$($(1)) -haxe_STEP_TO_PROG_js = haxe/$($(1)).js +haxe_STEP_TO_PROG_neko = impls/haxe/$($(1)).n +haxe_STEP_TO_PROG_python = impls/haxe/$($(1)).py +haxe_STEP_TO_PROG_cpp = impls/haxe/cpp/$($(1)) +haxe_STEP_TO_PROG_js = impls/haxe/$($(1)).js -scheme_STEP_TO_PROG_chibi = scheme/$($(1)).scm -scheme_STEP_TO_PROG_kawa = scheme/out/$($(1)).class -scheme_STEP_TO_PROG_gauche = scheme/$($(1)).scm -scheme_STEP_TO_PROG_chicken = scheme/$($(1)) -scheme_STEP_TO_PROG_sagittarius = scheme/$($(1)).scm -scheme_STEP_TO_PROG_cyclone = scheme/$($(1)) -scheme_STEP_TO_PROG_foment = scheme/$($(1)).scm +scheme_STEP_TO_PROG_chibi = impls/scheme/$($(1)).scm +scheme_STEP_TO_PROG_kawa = impls/scheme/out/$($(1)).class +scheme_STEP_TO_PROG_gauche = impls/scheme/$($(1)).scm +scheme_STEP_TO_PROG_chicken = impls/scheme/$($(1)) +scheme_STEP_TO_PROG_sagittarius = impls/scheme/$($(1)).scm +scheme_STEP_TO_PROG_cyclone = impls/scheme/$($(1)) +scheme_STEP_TO_PROG_foment = impls/scheme/$($(1)).scm # Map of step (e.g. "step8") to executable file for that step -ada_STEP_TO_PROG = ada/$($(1)) -ada.2_STEP_TO_PROG = ada.2/$($(1)) -awk_STEP_TO_PROG = awk/$($(1)).awk -bash_STEP_TO_PROG = bash/$($(1)).sh -basic_STEP_TO_PROG = $(basic_STEP_TO_PROG_$(basic_MODE)) -bbc-basic_STEP_TO_PROG = bbc-basic/$($(1)).bas -c_STEP_TO_PROG = c/$($(1)) -chuck_STEP_TO_PROG = chuck/$($(1)).ck -clojure_STEP_TO_PROG = $(clojure_STEP_TO_PROG_$(clojure_MODE)) -coffee_STEP_TO_PROG = coffee/$($(1)).coffee -common-lisp_STEP_TO_PROG = common-lisp/$($(1)) -cpp_STEP_TO_PROG = cpp/$($(1)) -crystal_STEP_TO_PROG = crystal/$($(1)) -cs_STEP_TO_PROG = cs/$($(1)).exe -d_STEP_TO_PROG = d/$($(1)) -dart_STEP_TO_PROG = dart/$($(1)).dart -elisp_STEP_TO_PROG = elisp/$($(1)).el -elixir_STEP_TO_PROG = elixir/lib/mix/tasks/$($(1)).ex -elm_STEP_TO_PROG = elm/$($(1)).js -erlang_STEP_TO_PROG = erlang/$($(1)) -es6_STEP_TO_PROG = es6/$($(1)).mjs -factor_STEP_TO_PROG = factor/$($(1))/$($(1)).factor -fantom_STEP_TO_PROG = fantom/lib/fan/$($(1)).pod -forth_STEP_TO_PROG = forth/$($(1)).fs -fsharp_STEP_TO_PROG = fsharp/$($(1)).exe -go_STEP_TO_PROG = go/$($(1)) -groovy_STEP_TO_PROG = groovy/$($(1)).groovy -gnu-smalltalk_STEP_TO_PROG = gnu-smalltalk/$($(1)).st -guile_STEP_TO_PROG = guile/$($(1)).scm -haskell_STEP_TO_PROG = haskell/$($(1)) -haxe_STEP_TO_PROG = $(haxe_STEP_TO_PROG_$(haxe_MODE)) -hy_STEP_TO_PROG = hy/$($(1)).hy -io_STEP_TO_PROG = io/$($(1)).io -java_STEP_TO_PROG = java/target/classes/mal/$($(1)).class -js_STEP_TO_PROG = js/$($(1)).js -jq_STEP_PROG = jq/$($(1)).jq -julia_STEP_TO_PROG = julia/$($(1)).jl -kotlin_STEP_TO_PROG = kotlin/$($(1)).jar -livescript_STEP_TO_PROG = livescript/$($(1)).js -logo_STEP_TO_PROG = logo/$($(1)).lg -lua_STEP_TO_PROG = lua/$($(1)).lua -make_STEP_TO_PROG = make/$($(1)).mk -mal_STEP_TO_PROG = mal/$($(1)).mal -matlab_STEP_TO_PROG = matlab/$($(1)).m -miniMAL_STEP_TO_PROG = miniMAL/$($(1)).json -nasm_STEP_TO_PROG = nasm/$($(1)) -nim_STEP_TO_PROG = nim/$($(1)) -objc_STEP_TO_PROG = objc/$($(1)) -objpascal_STEP_TO_PROG = objpascal/$($(1)) -ocaml_STEP_TO_PROG = ocaml/$($(1)) -perl_STEP_TO_PROG = perl/$($(1)).pl -perl6_STEP_TO_PROG = perl6/$($(1)).pl -php_STEP_TO_PROG = php/$($(1)).php -picolisp_STEP_TO_PROG = picolisp/$($(1)).l -pike_STEP_TO_PROG = pike/$($(1)).pike -plpgsql_STEP_TO_PROG = plpgsql/$($(1)).sql -plsql_STEP_TO_PROG = plsql/$($(1)).sql -powershell_STEP_TO_PROG = powershell/$($(1)).ps1 -ps_STEP_TO_PROG = ps/$($(1)).ps -python_STEP_TO_PROG = python/$($(1)).py -python.2_STEP_TO_PROG = python.2/$($(1)).py -r_STEP_TO_PROG = r/$($(1)).r -racket_STEP_TO_PROG = racket/$($(1)).rkt -rexx_STEP_TO_PROG = rexx/$($(1)).rexxpp -rpython_STEP_TO_PROG = rpython/$($(1)) -ruby_STEP_TO_PROG = ruby/$($(1)).rb -rust_STEP_TO_PROG = rust/$($(1)) -scala_STEP_TO_PROG = scala/target/scala-2.11/classes/$($(1)).class -scheme_STEP_TO_PROG = $(scheme_STEP_TO_PROG_$(scheme_MODE)) -skew_STEP_TO_PROG = skew/$($(1)).js -swift_STEP_TO_PROG = swift/$($(1)) -swift3_STEP_TO_PROG = swift3/$($(1)) -swift4_STEP_TO_PROG = swift4/$($(1)) -swift5_STEP_TO_PROG = swift5/$($(1)) -tcl_STEP_TO_PROG = tcl/$($(1)).tcl -ts_STEP_TO_PROG = ts/$($(1)).js -vala_STEP_TO_PROG = vala/$($(1)) -vb_STEP_TO_PROG = vb/$($(1)).exe -vhdl_STEP_TO_PROG = vhdl/$($(1)) -vimscript_STEP_TO_PROG = vimscript/$($(1)).vim -wasm_STEP_TO_PROG = wasm/$($(1)).$(if $(filter lucet,$(wasm_MODE)),so,wasm) -wren_STEP_TO_PROG = wren/$($(1)).wren -yorick_STEP_TO_PROG = yorick/$($(1)).i -zig_STEP_TO_PROG = zig/$($(1)) +ada_STEP_TO_PROG = impls/ada/$($(1)) +ada.2_STEP_TO_PROG = impls/ada.2/$($(1)) +awk_STEP_TO_PROG = impls/awk/$($(1)).awk +bash_STEP_TO_PROG = impls/bash/$($(1)).sh +basic_STEP_TO_PROG = $(basic_STEP_TO_PROG_$(basic_MODE)) +bbc-basic_STEP_TO_PROG = impls/bbc-basic/$($(1)).bas +c_STEP_TO_PROG = impls/c/$($(1)) +chuck_STEP_TO_PROG = impls/chuck/$($(1)).ck +clojure_STEP_TO_PROG = $(clojure_STEP_TO_PROG_$(clojure_MODE)) +coffee_STEP_TO_PROG = impls/coffee/$($(1)).coffee +common-lisp_STEP_TO_PROG = impls/common-lisp/$($(1)) +cpp_STEP_TO_PROG = impls/cpp/$($(1)) +crystal_STEP_TO_PROG = impls/crystal/$($(1)) +cs_STEP_TO_PROG = impls/cs/$($(1)).exe +d_STEP_TO_PROG = impls/d/$($(1)) +dart_STEP_TO_PROG = impls/dart/$($(1)).dart +elisp_STEP_TO_PROG = impls/elisp/$($(1)).el +elixir_STEP_TO_PROG = impls/elixir/lib/mix/tasks/$($(1)).ex +elm_STEP_TO_PROG = impls/elm/$($(1)).js +erlang_STEP_TO_PROG = impls/erlang/$($(1)) +es6_STEP_TO_PROG = impls/es6/$($(1)).mjs +factor_STEP_TO_PROG = impls/factor/$($(1))/$($(1)).factor +fantom_STEP_TO_PROG = impls/fantom/lib/fan/$($(1)).pod +forth_STEP_TO_PROG = impls/forth/$($(1)).fs +fsharp_STEP_TO_PROG = impls/fsharp/$($(1)).exe +go_STEP_TO_PROG = impls/go/$($(1)) +groovy_STEP_TO_PROG = impls/groovy/$($(1)).groovy +gnu-smalltalk_STEP_TO_PROG = impls/gnu-smalltalk/$($(1)).st +guile_STEP_TO_PROG = impls/guile/$($(1)).scm +haskell_STEP_TO_PROG = impls/haskell/$($(1)) +haxe_STEP_TO_PROG = $(haxe_STEP_TO_PROG_$(haxe_MODE)) +hy_STEP_TO_PROG = impls/hy/$($(1)).hy +io_STEP_TO_PROG = impls/io/$($(1)).io +java_STEP_TO_PROG = impls/java/target/classes/mal/$($(1)).class +js_STEP_TO_PROG = impls/js/$($(1)).js +jq_STEP_PROG = impls/jq/$($(1)).jq +julia_STEP_TO_PROG = impls/julia/$($(1)).jl +kotlin_STEP_TO_PROG = impls/kotlin/$($(1)).jar +livescript_STEP_TO_PROG = impls/livescript/$($(1)).js +logo_STEP_TO_PROG = impls/logo/$($(1)).lg +lua_STEP_TO_PROG = impls/lua/$($(1)).lua +make_STEP_TO_PROG = impls/make/$($(1)).mk +mal_STEP_TO_PROG = impls/mal/$($(1)).mal +matlab_STEP_TO_PROG = impls/matlab/$($(1)).m +miniMAL_STEP_TO_PROG = impls/miniMAL/$($(1)).json +nasm_STEP_TO_PROG = impls/nasm/$($(1)) +nim_STEP_TO_PROG = impls/nim/$($(1)) +objc_STEP_TO_PROG = impls/objc/$($(1)) +objpascal_STEP_TO_PROG = impls/objpascal/$($(1)) +ocaml_STEP_TO_PROG = impls/ocaml/$($(1)) +perl_STEP_TO_PROG = impls/perl/$($(1)).pl +perl6_STEP_TO_PROG = impls/perl6/$($(1)).pl +php_STEP_TO_PROG = impls/php/$($(1)).php +picolisp_STEP_TO_PROG = impls/picolisp/$($(1)).l +pike_STEP_TO_PROG = impls/pike/$($(1)).pike +plpgsql_STEP_TO_PROG = impls/plpgsql/$($(1)).sql +plsql_STEP_TO_PROG = impls/plsql/$($(1)).sql +powershell_STEP_TO_PROG = impls/powershell/$($(1)).ps1 +ps_STEP_TO_PROG = impls/ps/$($(1)).ps +python_STEP_TO_PROG = impls/python/$($(1)).py +python.2_STEP_TO_PROG = impls/python.2/$($(1)).py +r_STEP_TO_PROG = impls/r/$($(1)).r +racket_STEP_TO_PROG = impls/racket/$($(1)).rkt +rexx_STEP_TO_PROG = impls/rexx/$($(1)).rexxpp +rpython_STEP_TO_PROG = impls/rpython/$($(1)) +ruby_STEP_TO_PROG = impls/ruby/$($(1)).rb +rust_STEP_TO_PROG = impls/rust/$($(1)) +scala_STEP_TO_PROG = impls/scala/target/scala-2.11/classes/$($(1)).class +scheme_STEP_TO_PROG = $(scheme_STEP_TO_PROG_$(scheme_MODE)) +skew_STEP_TO_PROG = impls/skew/$($(1)).js +swift_STEP_TO_PROG = impls/swift/$($(1)) +swift3_STEP_TO_PROG = impls/swift3/$($(1)) +swift4_STEP_TO_PROG = impls/swift4/$($(1)) +swift5_STEP_TO_PROG = impls/swift5/$($(1)) +tcl_STEP_TO_PROG = impls/tcl/$($(1)).tcl +ts_STEP_TO_PROG = impls/ts/$($(1)).js +vala_STEP_TO_PROG = impls/vala/$($(1)) +vb_STEP_TO_PROG = impls/vb/$($(1)).exe +vhdl_STEP_TO_PROG = impls/vhdl/$($(1)) +vimscript_STEP_TO_PROG = impls/vimscript/$($(1)).vim +wasm_STEP_TO_PROG = impls/wasm/$($(1)).$(if $(filter lucet,$(wasm_MODE)),so,wasm) +wren_STEP_TO_PROG = impls/wren/$($(1)).wren +yorick_STEP_TO_PROG = impls/yorick/$($(1)).i +zig_STEP_TO_PROG = impls/zig/$($(1)) # # General settings and utility functions @@ -290,7 +290,7 @@ STEP_TEST_FILES = $(strip $(wildcard \ $(filter-out $(if $(filter $(1),$(step5_EXCLUDES)),step5,),\ $(regress_$(2)))\ ,$(2)),\ - $(1)/tests/$($(s))$(EXTENSION) tests/$($(s))$(EXTENSION)))) + impls/$(1)/tests/$($(s))$(EXTENSION) impls/tests/$($(s))$(EXTENSION)))) # DOCKERIZE utility functions lc = $(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst G,g,$(subst H,h,$(subst I,i,$(subst J,j,$(subst K,k,$(subst L,l,$(subst M,m,$(subst N,n,$(subst O,o,$(subst P,p,$(subst Q,q,$(subst R,r,$(subst S,s,$(subst T,t,$(subst U,u,$(subst V,v,$(subst W,w,$(subst X,x,$(subst Y,y,$(subst Z,z,$1)))))))))))))))))))))))))) @@ -307,13 +307,13 @@ get_build_command = $(strip $(foreach mode,$(1)_MODE, \ docker run \ -it --rm -u $(shell id -u) \ -v $(dir $(abspath $(lastword $(MAKEFILE_LIST)))):/mal \ - -w /mal/$(1) \ + -w /mal/impls/$(1) \ $(if $(strip $($(mode))),-e $(mode)=$($(mode)),) \ $(if $(filter factor,$(1)),-e FACTOR_ROOTS=$(FACTOR_ROOTS),) \ $(call impl_to_image,$(1)) \ $(MAKE) $(if $(strip $($(mode))),$(mode)=$($(mode)),) \ ,\ - $(MAKE) $(if $(strip $($(mode))),$(mode)=$($(mode)),) -C $(impl)))) + $(MAKE) $(if $(strip $($(mode))),$(mode)=$($(mode)),) -C impls/$(impl)))) # Takes impl and step args. Optional env vars and dockerize args # Returns a command prefix (docker command and environment variables) @@ -323,7 +323,7 @@ get_run_prefix = $(strip $(foreach mode,$(call actual_impl,$(1))_MODE, \ docker run -e STEP=$($2) -e MAL_IMPL=$(MAL_IMPL) \ -it --rm -u $(shell id -u) \ -v $(dir $(abspath $(lastword $(MAKEFILE_LIST)))):/mal \ - -w /mal/$(call actual_impl,$(1)) \ + -w /mal/impls/$(call actual_impl,$(1)) \ $(if $(strip $($(mode))),-e $(mode)=$($(mode)),) \ $(if $(filter factor,$(1)),-e FACTOR_ROOTS=$(FACTOR_ROOTS),) \ $(foreach env,$(3),-e $(env)) \ @@ -337,11 +337,11 @@ get_run_prefix = $(strip $(foreach mode,$(call actual_impl,$(1))_MODE, \ # Takes impl and step # Returns the runtest command prefix (with runtest options) for testing the given step get_runtest_cmd = $(call get_run_prefix,$(1),$(2),$(if $(filter cs fsharp mal tcl vb,$(1)),RAW=1,)) \ - ../runtest.py $(opt_HARD) $(opt_DEFERRABLE) $(opt_OPTIONAL) $(call $(1)_TEST_OPTS) $(TEST_OPTS) + ../../runtest.py $(opt_HARD) $(opt_DEFERRABLE) $(opt_OPTIONAL) $(call $(1)_TEST_OPTS) $(TEST_OPTS) # Takes impl and step # Returns the runtest command prefix (with runtest options) for testing the given step -get_argvtest_cmd = $(call get_run_prefix,$(1),$(2)) ../run_argv_test.sh +get_argvtest_cmd = $(call get_run_prefix,$(1),$(2)) ../tests/run_argv_test.sh # Derived lists STEPS = $(sort $(filter-out %_EXCLUDES,$(filter step%,$(.VARIABLES)))) @@ -382,10 +382,10 @@ ALL_REPL = $(strip $(sort \ # encoded in the implementation Makefile not here .PHONY: $(foreach i,$(DO_IMPLS),$(foreach s,$(STEPS),$(call $(i)_STEP_TO_PROG,$(s)))) $(foreach i,$(DO_IMPLS),$(foreach s,$(STEPS),$(call $(i)_STEP_TO_PROG,$(s)))): - $(foreach impl,$(word 1,$(subst /, ,$(@))),\ + $(foreach impl,$(word 2,$(subst /, ,$(@))),\ $(if $(DOCKERIZE), \ - $(call get_build_command,$(impl)) $(patsubst $(impl)/%,%,$(@)), \ - $(call get_build_command,$(impl)) $(subst $(impl)/,,$(@)))) + $(call get_build_command,$(impl)) $(patsubst impls/$(impl)/%,%,$(@)), \ + $(call get_build_command,$(impl)) $(subst impls/$(impl)/,,$(@)))) # Allow IMPL, build^IMPL, IMPL^STEP, and build^IMPL^STEP $(DO_IMPLS): $$(foreach s,$$(STEPS),$$(call $$(@)_STEP_TO_PROG,$$(s))) @@ -405,8 +405,9 @@ $(foreach i,$(DO_IMPLS),$(foreach s,$(STEPS),build^$(i)^$(s))): $$(call $$(word $(ALL_TESTS): $$(call $$(word 2,$$(subst ^, ,$$(@)))_STEP_TO_PROG,$$(word 3,$$(subst ^, ,$$(@)))) @$(foreach impl,$(word 2,$(subst ^, ,$(@))),\ $(foreach step,$(word 3,$(subst ^, ,$(@))),\ - cd $(call actual_impl,$(impl)) && \ - $(foreach test,$(call STEP_TEST_FILES,$(impl),$(step)),\ + echo "(call STEP_TEST_FILES,$(impl),$(step)): $(call STEP_TEST_FILES,$(impl),$(step))" && \ + cd impls/$(call actual_impl,$(impl)) && \ + $(foreach test,$(patsubst impls/%,%,$(call STEP_TEST_FILES,$(impl),$(step))),\ echo '----------------------------------------------' && \ echo 'Testing $@; step file: $+, test file: $(test)' && \ echo 'Running: $(call get_runtest_cmd,$(impl),$(step)) ../$(test) -- ../$(impl)/run' && \ @@ -438,7 +439,7 @@ $(DOCKER_BUILD): @echo "----------------------------------------------"; \ $(foreach impl,$(word 2,$(subst ^, ,$(@))),\ echo "Running: docker build -t $(call impl_to_image,$(impl)) .:"; \ - cd $(impl) && docker build -t $(call impl_to_image,$(impl)) .) + cd impls/$(impl) && docker build -t $(call impl_to_image,$(impl)) .) # # Docker shell rules @@ -460,7 +461,7 @@ perf: $(IMPL_PERF) $(IMPL_PERF): @echo "----------------------------------------------"; \ $(foreach impl,$(word 2,$(subst ^, ,$(@))),\ - cd $(call actual_impl,$(impl)); \ + cd impls/$(call actual_impl,$(impl)); \ echo "Performance test for $(impl):"; \ echo 'Running: $(call get_run_prefix,$(impl),stepA) ../$(impl)/run ../tests/perf1.mal'; \ $(call get_run_prefix,$(impl),stepA) ../$(impl)/run ../tests/perf1.mal; \ @@ -477,7 +478,7 @@ $(IMPL_PERF): $(ALL_REPL): $$(call $$(word 2,$$(subst ^, ,$$(@)))_STEP_TO_PROG,$$(word 3,$$(subst ^, ,$$(@)))) @$(foreach impl,$(word 2,$(subst ^, ,$(@))),\ $(foreach step,$(word 3,$(subst ^, ,$(@))),\ - cd $(call actual_impl,$(impl)); \ + cd impls/$(call actual_impl,$(impl)); \ echo 'REPL implementation $(impl), step file: $+'; \ echo 'Running: $(call get_run_prefix,$(impl),$(step)) ../$(impl)/run $(RUN_ARGS)'; \ $(call get_run_prefix,$(impl),$(step)) ../$(impl)/run $(RUN_ARGS);)) @@ -496,7 +497,7 @@ stats: $(IMPL_STATS) $(IMPL_STATS): @$(foreach impl,$(word 2,$(subst ^, ,$(@))),\ echo "Stats for $(impl):"; \ - $(LOCCOUNT) -x "[sS]tep[0-9]_.*|[.]md$$|tests|examples|Makefile|package.json|tsconfig.json|Cargo.toml|project.clj|node_modules|getline.cs|terminal.cs|elm-stuff|objpascal/regexpr|rdyncall|swift/templates" $(impl)) + $(LOCCOUNT) -x "[sS]tep[0-9]_.*|[.]md$$|tests|examples|Makefile|package.json|tsconfig.json|Cargo.toml|project.clj|node_modules|getline.cs|terminal.cs|elm-stuff|objpascal/regexpr|rdyncall|swift/templates" impls/$(impl)) # # Utility functions diff --git a/README.md b/README.md index 6d1ed384..470489ca 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,42 @@ **1. Mal is a Clojure inspired Lisp interpreter** -**2. Mal is implemented in 81 languages (84 different implementations and 104 runtime modes)** +**2. Mal is a learning tool** + +Each implementation of mal is separated into +11 incremental, self-contained (and testable) steps that demonstrate +core concepts of Lisp. The last step is capable of self-hosting +(running the mal implementation of mal). See the [make-a-lisp process +guide](process/guide.md). + +The make-a-lisp steps are: + +* [step0_repl](process/guide.md#step0) +* [step1_read_print](process/guide.md#step1) +* [step2_eval](process/guide.md#step2) +* [step3_env](process/guide.md#step3) +* [step4_if_fn_do](process/guide.md#step4) +* [step5_tco](process/guide.md#step5) +* [step6_file](process/guide.md#step6) +* [step7_quote](process/guide.md#step7) +* [step8_macros](process/guide.md#step8) +* [step9_try](process/guide.md#step9) +* [stepA_mal](process/guide.md#stepA) + +Each make-a-lisp step has an associated architectural diagram. That elements +that are new for that step are highlighted in red. +Here is the final diagram for [step A](process/guide.md#stepA): + +![stepA_mal architecture](process/stepA_mal.png) + +If you are interested in creating a mal implementation (or just +interested in using mal for something), please drop by the #mal +channel on freenode. In addition to the [make-a-lisp process +guide](process/guide.md) there is also a [mal/make-a-lisp +FAQ](docs/FAQ.md) where I attempt to answer some common questions. + + +**3. Mal is implemented in 81 languages (84 different implementations and 104 runtime modes)** | Language | Creator | | -------- | ------- | @@ -96,41 +131,6 @@ | [Zig](#zig) | [Josh Tobin](https://github.com/rjtobin) | -**3. Mal is a learning tool** - -Each implementation of mal is separated into -11 incremental, self-contained (and testable) steps that demonstrate -core concepts of Lisp. The last step is capable of self-hosting -(running the mal implementation of mal). See the [make-a-lisp process -guide](process/guide.md). - -The make-a-lisp steps are: - -* [step0_repl](process/guide.md#step0) -* [step1_read_print](process/guide.md#step1) -* [step2_eval](process/guide.md#step2) -* [step3_env](process/guide.md#step3) -* [step4_if_fn_do](process/guide.md#step4) -* [step5_tco](process/guide.md#step5) -* [step6_file](process/guide.md#step6) -* [step7_quote](process/guide.md#step7) -* [step8_macros](process/guide.md#step8) -* [step9_try](process/guide.md#step9) -* [stepA_mal](process/guide.md#stepA) - -Each make-a-lisp step has an associated architectural diagram. That elements -that are new for that step are highlighted in red. -Here is the final diagram for [step A](process/guide.md#stepA): - -![stepA_mal architecture](process/stepA_mal.png) - -If you are interested in creating a mal implementation (or just -interested in using mal for something), please drop by the #mal -channel on freenode. In addition to the [make-a-lisp process -guide](process/guide.md) there is also a [mal/make-a-lisp -FAQ](docs/FAQ.md) where I attempt to answer some common questions. - - ## Presentations Mal was presented publicly for the first time in a lightning talk at @@ -197,7 +197,7 @@ GNAT and (optionally) make. There are no external dependencies (readline not implemented). ``` -cd ada +cd impls/ada make ./stepX_YYY ``` @@ -208,7 +208,7 @@ The second Ada implementation was developed with GNAT 8 and links with the GNU readline library. ``` -cd ada +cd impls/ada make ./stepX_YYY ``` @@ -218,14 +218,14 @@ make The GNU awk implementation of mal has been tested with GNU awk 4.1.1. ``` -cd gawk +cd impls/gawk gawk -O -f stepX_YYY.awk ``` ### Bash 4 ``` -cd bash +cd impls/bash bash stepX_YYY.sh ``` @@ -241,7 +241,7 @@ has been tested with [qb64](http://www.qb64.net/). Generate C64 code and run it using cbmbasic: ``` -cd basic +cd impls/basic make stepX_YYY.bas STEP=stepX_YYY ./run ``` @@ -249,7 +249,7 @@ STEP=stepX_YYY ./run Generate QBasic code and load it into qb64: ``` -cd basic +cd impls/basic make MODE=qbasic stepX_YYY.bas ./qb64 stepX_YYY.bas ``` @@ -262,7 +262,7 @@ inspiration for this implementation. The BBC BASIC V implementation can run in the Brandy interpreter: ``` -cd bbc-basic +cd impls/bbc-basic brandy -quit stepX_YYY.bbc ``` @@ -281,7 +281,7 @@ header packages): glib, libffi6, libgc, and either the libedit or GNU readline library. ``` -cd c +cd impls/c make ./stepX_YYY ``` @@ -293,7 +293,7 @@ a readline compatible library to build. See the `cpp/README.md` for more details: ``` -cd cpp +cd impls/cpp make # OR make CXX=clang++-3.5 @@ -308,7 +308,7 @@ C# compiler (mcs) and the Mono runtime (version 2.10.8.1). Both are required to build and run the C# implementation. ``` -cd cs +cd impls/cs make mono ./stepX_YYY.exe ``` @@ -318,7 +318,7 @@ mono ./stepX_YYY.exe The ChucK implementation has been tested with ChucK 1.3.5.2. ``` -cd chuck +cd impls/chuck ./run ``` @@ -328,7 +328,7 @@ For the most part the Clojure implementation requires Clojure 1.5, however, to pass all tests, Clojure 1.8.0-RC4 is required. ``` -cd clojure +cd impls/clojure lein with-profile +stepX trampoline run ``` @@ -336,7 +336,7 @@ lein with-profile +stepX trampoline run ``` sudo npm install -g coffee-script -cd coffee +cd impls/coffee coffee ./stepX_YYY ``` @@ -348,7 +348,7 @@ the [README](common-lisp/README.org) for more details. Provided you have the dependencies mentioned installed, do the following to run the implementation ``` -cd common-lisp +cd impls/common-lisp make ./run ``` @@ -358,7 +358,7 @@ make The Crystal implementation of mal has been tested with Crystal 0.26.1. ``` -cd crystal +cd impls/crystal crystal run ./stepX_YYY.cr # OR make # needed to run tests @@ -371,7 +371,7 @@ The D implementation of mal was tested with GDC 4.8. It requires the GNU readline library. ``` -cd d +cd impls/d make ./stepX_YYY ``` @@ -381,7 +381,7 @@ make The Dart implementation has been tested with Dart 1.20. ``` -cd dart +cd impls/dart dart ./stepX_YYY ``` @@ -393,7 +393,7 @@ and `C-d` work, `C-c` cancels the process), it is recommended to use `rlwrap`. ``` -cd elisp +cd impls/elisp emacs -Q --batch --load stepX_YYY.el # with full readline support rlwrap emacs -Q --batch --load stepX_YYY.el @@ -404,7 +404,7 @@ rlwrap emacs -Q --batch --load stepX_YYY.el The Elixir implementation of mal has been tested with Elixir 1.0.5. ``` -cd elixir +cd impls/elixir mix stepX_YYY # Or with readline/line editing functionality: iex -S mix stepX_YYY @@ -415,7 +415,7 @@ iex -S mix stepX_YYY The Elm implementation of mal has been tested with Elm 0.18.0 ``` -cd elm +cd impls/elm make stepX_YYY.js STEP=stepX_YYY ./run ``` @@ -426,7 +426,7 @@ The Erlang implementation of mal requires [Erlang/OTP R17](http://www.erlang.org and [rebar](https://github.com/rebar/rebar) to build. ``` -cd erlang +cd impls/erlang make # OR MAL_STEP=stepX_YYY rebar compile escriptize # build individual step @@ -440,7 +440,7 @@ The ES6 / ECMAScript 2015 implementation uses the JavaScript. The generated code has been tested with Node 0.12.4. ``` -cd es6 +cd impls/es6 make node build/stepX_YYY.js ``` @@ -454,7 +454,7 @@ compiler (mcs) is also necessary to compile the readline dependency. All are required to build and run the F# implementation. ``` -cd fsharp +cd impls/fsharp make mono ./stepX_YYY.exe ``` @@ -465,7 +465,7 @@ The Factor implementation of mal has been tested with Factor 0.97 ([factorcode.org](http://factorcode.org)). ``` -cd factor +cd impls/factor FACTOR_ROOTS=. factor -run=stepX_YYY ``` @@ -474,7 +474,7 @@ FACTOR_ROOTS=. factor -run=stepX_YYY The Fantom implementation of mal has been tested with Fantom 1.0.70. ``` -cd fantom +cd impls/fantom make lib/fan/stepX_YYY.pod STEP=stepX_YYY ./run ``` @@ -482,14 +482,14 @@ STEP=stepX_YYY ./run ### Forth ``` -cd forth +cd impls/forth gforth stepX_YYY.fs ``` ### GNU Guile 2.1+ ``` -cd guile +cd impls/guile guile -L ./ stepX_YYY.scm ``` @@ -498,7 +498,7 @@ guile -L ./ stepX_YYY.scm The Smalltalk implementation of mal has been tested with GNU Smalltalk 3.2.91. ``` -cd gnu-smalltalk +cd impls/gnu-smalltalk ./run ``` @@ -508,7 +508,7 @@ The Go implementation of mal requires that go is installed on on the path. The implementation has been tested with Go 1.3.1. ``` -cd go +cd impls/go make ./stepX_YYY ``` @@ -520,7 +520,7 @@ The Groovy implementation of mal requires Groovy to run and has been tested with Groovy 1.8.6. ``` -cd groovy +cd impls/groovy make groovy ./stepX_YYY.groovy ``` @@ -531,7 +531,7 @@ The Haskell implementation requires the ghc compiler version 7.10.1 or later and also the Haskell parsec and readline (or editline) packages. ``` -cd haskell +cd impls/haskell make ./stepX_YYY ``` @@ -543,7 +543,7 @@ Four different Haxe targets are supported: Neko, Python, C++, and JavaScript. ``` -cd haxe +cd impls/haxe # Neko make all-neko neko ./stepX_YYY.n @@ -563,7 +563,7 @@ node ./stepX_YYY.js The Hy implementation of mal has been tested with Hy 0.13.0. ``` -cd hy +cd impls/hy ./stepX_YYY.hy ``` @@ -572,7 +572,7 @@ cd hy The Io implementation of mal has been tested with Io version 20110905. ``` -cd io +cd impls/io io ./stepX_YYY.io ``` @@ -581,7 +581,7 @@ io ./stepX_YYY.io The Java implementation of mal requires maven2 to build. ``` -cd java +cd impls/java mvn compile mvn -quiet exec:java -Dexec.mainClass=mal.stepX_YYY # OR @@ -591,7 +591,7 @@ mvn -quiet exec:java -Dexec.mainClass=mal.stepX_YYY -Dexec.args="CMDLINE_ARGS" ### JavaScript/Node ``` -cd js +cd impls/js npm install node stepX_YYY.js ``` @@ -601,7 +601,7 @@ node stepX_YYY.js The Julia implementation of mal requires Julia 0.4. ``` -cd julia +cd impls/julia julia stepX_YYY.jl ``` @@ -610,7 +610,7 @@ julia stepX_YYY.jl Tested against version 1.6, with a lot of cheating in the IO department ``` -cd jq +cd impls/jq STEP=stepA_YYY ./run # with Debug DEBUG=true STEP=stepA_YYY ./run @@ -621,7 +621,7 @@ DEBUG=true STEP=stepA_YYY ./run The Kotlin implementation of mal has been tested with Kotlin 1.0. ``` -cd kotlin +cd impls/kotlin make java -jar stepX_YYY.jar ``` @@ -631,7 +631,7 @@ java -jar stepX_YYY.jar The LiveScript implementation of mal has been tested with LiveScript 1.5. ``` -cd livescript +cd impls/livescript make node_modules/.bin/lsc stepX_YYY.ls ``` @@ -641,7 +641,7 @@ node_modules/.bin/lsc stepX_YYY.ls The Logo implementation of mal has been tested with UCBLogo 6.0. ``` -cd logo +cd impls/logo logo stepX_YYY.lg ``` @@ -652,7 +652,7 @@ implementation requires that luarocks and the lua-rex-pcre library are installed. ``` -cd lua +cd impls/lua make # to build and link linenoise.so ./stepX_YYY.lua ``` @@ -664,7 +664,7 @@ the other implementations and passing the mal step to run as a command line argument. ``` -cd IMPL +cd impls/IMPL IMPL_STEPA_CMD ../mal/stepX_YYY.mal ``` @@ -672,7 +672,7 @@ IMPL_STEPA_CMD ../mal/stepX_YYY.mal ### GNU Make 3.81 ``` -cd make +cd impls/make make -f stepX_YYY.mk ``` @@ -682,7 +682,7 @@ The NASM implementation of mal is written for x86-64 Linux, and has been tested with Linux 3.16.0-4-amd64 and NASM version 2.11.05. ``` -cd nasm +cd impls/nasm make ./stepX_YYY ``` @@ -692,7 +692,7 @@ make The Nim implementation of mal has been tested with Nim 1.0.4. ``` -cd nim +cd impls/nim make # OR nimble build @@ -705,7 +705,7 @@ The Object Pascal implementation of mal has been built and tested on Linux using the Free Pascal compiler version 2.6.2 and 2.6.4. ``` -cd objpascal +cd impls/objpascal make ./stepX_YYY ``` @@ -717,7 +717,7 @@ Linux using clang/LLVM 3.6. It has also been built and tested on OS X using XCode 7. ``` -cd objc +cd impls/objc make ./stepX_YYY ``` @@ -725,7 +725,7 @@ make ### OCaml 4.01.0 ``` -cd ocaml +cd impls/ocaml make ./stepX_YYY ``` @@ -737,7 +737,7 @@ It has also been tested with MATLAB version R2014a on Linux. Note that MATLAB is a commercial product. ``` -cd matlab +cd impls/matlab ./stepX_YYY octave -q --no-gui --no-history --eval "stepX_YYY();quit;" matlab -nodisplay -nosplash -nodesktop -nojvm -r "stepX_YYY();quit;" @@ -753,7 +753,7 @@ implemented in less than 1024 bytes of JavaScript. To run the miniMAL implementation of mal you need to download/install the miniMAL interpreter (which requires Node.js). ``` -cd miniMAL +cd impls/miniMAL # Download miniMAL and dependencies npm install export PATH=`pwd`/node_modules/minimal-lisp/:$PATH @@ -769,7 +769,7 @@ For readline line editing support, install Term::ReadLine::Perl or Term::ReadLine::Gnu from CPAN. ``` -cd perl +cd impls/perl perl stepX_YYY.pl ``` @@ -778,7 +778,7 @@ perl stepX_YYY.pl The Perl 6 implementation was tested on Rakudo Perl 6 2016.04. ``` -cd perl6 +cd impls/perl6 perl6 stepX_YYY.pl ``` @@ -788,7 +788,7 @@ The PHP implementation of mal requires the php command line interface to run. ``` -cd php +cd impls/php php stepX_YYY.php ``` @@ -798,7 +798,7 @@ The Picolisp implementation requires libreadline and Picolisp 3.1.11 or later. ``` -cd picolisp +cd impls/picolisp ./run ``` @@ -807,7 +807,7 @@ cd picolisp The Pike implementation was tested on Pike 8.0. ``` -cd pike +cd impls/pike pike stepX_YYY.pike ``` @@ -824,7 +824,7 @@ using the PGPASSWORD environment variable. The implementation has been tested with PostgreSQL 9.4. ``` -cd plpgsql +cd impls/plpgsql ./wrap.sh stepX_YYY.sql # OR PSQL_USER=myuser PGPASSWORD=mypass ./wrap.sh stepX_YYY.sql @@ -844,7 +844,7 @@ warnings (user password expiration, etc) will interfere with the ability of the wrapper script to communicate with the DB. ``` -cd plsql +cd impls/plsql ./wrap.sh stepX_YYY.sql # OR ORACLE_LOGON=myuser/mypass@ORCL ./wrap.sh stepX_YYY.sql @@ -856,7 +856,7 @@ The PostScript implementation of mal requires Ghostscript to run. It has been tested with Ghostscript 9.10. ``` -cd ps +cd impls/ps gs -q -dNODISPLAY -I./ stepX_YYY.ps ``` @@ -866,14 +866,14 @@ The PowerShell implementation of mal requires the PowerShell script language. It has been tested with PowerShell 6.0.0 Alpha 9 on Linux. ``` -cd powershell +cd impls/powershell powershell ./stepX_YYY.ps1 ``` ### Python (2.X and 3.X) ``` -cd python +cd impls/python python stepX_YYY.py ``` @@ -893,7 +893,7 @@ You must have [rpython](https://rpython.readthedocs.org/) on your path (included with [pypy](https://bitbucket.org/pypy/pypy/)). ``` -cd rpython +cd impls/rpython make # this takes a very long time ./stepX_YYY ``` @@ -903,7 +903,7 @@ make # this takes a very long time The R implementation of mal requires R (r-base-core) to run. ``` -cd r +cd impls/r make libs # to download and build rdyncall Rscript stepX_YYY.r ``` @@ -914,7 +914,7 @@ The Racket implementation of mal requires the Racket compiler/interpreter to run. ``` -cd racket +cd impls/racket ./stepX_YYY.rkt ``` @@ -923,7 +923,7 @@ cd racket The Rexx implementation of mal has been tested with Regina Rexx 3.6. ``` -cd rexx +cd impls/rexx make rexx -a ./stepX_YYY.rexxpp ``` @@ -931,7 +931,7 @@ rexx -a ./stepX_YYY.rexxpp ### Ruby (1.9+) ``` -cd ruby +cd impls/ruby ruby stepX_YYY.rb ``` @@ -941,7 +941,7 @@ The rust implementation of mal requires the rust compiler and build tool (cargo) to build. ``` -cd rust +cd impls/rust cargo run --release --bin stepX_YYY ``` @@ -950,7 +950,7 @@ cargo run --release --bin stepX_YYY Install scala and sbt (http://www.scala-sbt.org/0.13/tutorial/Installing-sbt-on-Linux.html): ``` -cd scala +cd impls/scala sbt 'run-main stepX_YYY' # OR sbt compile @@ -967,7 +967,7 @@ after figuring out how libraries are loaded and adjusting the `Makefile` and `run` script accordingly. ``` -cd scheme +cd impls/scheme make symlinks # chibi scheme_MODE=chibi ./run @@ -993,7 +993,7 @@ scheme_MODE=foment ./run The Skew implementation of mal has been tested with Skew 0.7.42. ``` -cd skew +cd impls/skew make node stepX_YYY.js ``` @@ -1006,7 +1006,7 @@ The Swift implementation of mal requires the Swift 2.0 compiler (XCode language and standard library. ``` -cd swift +cd impls/swift make ./stepX_YYY ``` @@ -1017,7 +1017,7 @@ The Swift 3 implementation of mal requires the Swift 3.0 compiler. It has been tested with Swift 3 Preview 3. ``` -cd swift3 +cd impls/swift3 make ./stepX_YYY ``` @@ -1028,7 +1028,7 @@ The Swift 4 implementation of mal requires the Swift 4.0 compiler. It has been tested with Swift 4.2.3 release. ``` -cd swift4 +cd impls/swift4 make ./stepX_YYY ``` @@ -1039,7 +1039,7 @@ The Swift 5 implementation of mal requires the Swift 5.0 compiler. It has been tested with Swift 5.1.1 release. ``` -cd swift5 +cd impls/swift5 swift run stepX_YYY ``` @@ -1049,7 +1049,7 @@ The Tcl implementation of mal requires Tcl 8.6 to run. For readline line editing support, install tclreadline. ``` -cd tcl +cd impls/tcl tclsh ./stepX_YYY.tcl ``` @@ -1059,7 +1059,7 @@ The TypeScript implementation of mal requires the TypeScript 2.2 compiler. It has been tested with Node.js v6. ``` -cd ts +cd impls/ts make node ./stepX_YYY.js ``` @@ -1071,7 +1071,7 @@ compiler. You will need to install `valac` and `libreadline-dev` or equivalent. ``` -cd vala +cd impls/vala make ./stepX_YYY ``` @@ -1081,7 +1081,7 @@ make The VHDL implementation of mal has been tested with GHDL 0.29. ``` -cd vhdl +cd impls/vhdl make ./run_vhdl.sh ./stepX_YYY ``` @@ -1091,7 +1091,7 @@ make The Vimscript implementation of mal requires Vim 8.0 to run. ``` -cd vimscript +cd impls/vimscript ./run_vimscript.sh ./stepX_YYY.vim ``` @@ -1102,7 +1102,7 @@ VB compiler (vbnc) and the Mono runtime (version 2.10.8.1). Both are required to build and run the VB.NET implementation. ``` -cd vb +cd impls/vb make mono ./stepX_YYY.exe ``` @@ -1121,7 +1121,7 @@ runs under several different non-web embeddings (runtimes): [warpy](https://github.com/kanaka/warpy). ``` -cd wasm +cd impls/wasm # node make wasm_MODE=node ./run.js ./stepX_YYY.wasm @@ -1150,7 +1150,7 @@ warpy --argv --memory-pages 256 ./stepX_YYY.wasm The Wren implementation of mal was tested on Wren 0.2.0. ``` -cd wren +cd impls/wren wren ./stepX_YYY.wren ``` @@ -1159,7 +1159,7 @@ wren ./stepX_YYY.wren The Yorick implementation of mal was tested on Yorick 2.2.04. ``` -cd yorick +cd impls/yorick yorick -batch ./stepX_YYY.i ``` @@ -1168,7 +1168,7 @@ yorick -batch ./stepX_YYY.i The Zig implementation of mal was tested on Zig 0.5. ``` -cd zig +cd impls/zig zig build stepX_YYY ``` diff --git a/impls/.gitignore b/impls/.gitignore new file mode 100644 index 00000000..c1371974 --- /dev/null +++ b/impls/.gitignore @@ -0,0 +1,149 @@ +.DS_Store +.bash_history +.cache +.cargo +.config +.mal-history +.crystal +.lein +.m2 +.ivy2 +.sbt +.npm +.node-gyp +package-lock.json +.elm +*/experiments +*/node_modules +*.o +*.pyc +*/step0_repl +*/step1_read_print +*/step2_eval +*/step3_env +*/step4_if_fn_do +*/step5_tco +*/step6_file +*/step7_quote +*/step8_macros +*/step9_try +*/stepA_mal +*/mal +*/notes + +logs +old + +ada/obj/ +awk/mal.awk +bash/mal.sh +clojure/mal.jar +clojure/target +clojure/.lein-repl-history +coffee/mal.coffee +cs/*.exe +cs/*.dll +cs/*.mdb +d/*.o +elixir/_build +elixir/deps +elixir/erl_crash.dump +elixir/*.ez +erlang/ebin +erlang/.rebar +erlang/src/*.beam +es6/mal.js +es6/.esm-cache +factor/mal.factor +fantom/lib +forth/mal.fs +fsharp/*.exe +fsharp/*.dll +fsharp/*.mdb +go/step* +groovy/*.class +groovy/mal.jar +haskell/*.hi +haskell/*.o +haxe/*.n +haxe/*.py +haxe/cpp/ +haxe/*.js +java/mal.jar +java/target/ +java/dependency-reduced-pom.xml +.npm/ +.node-gyp/ +js/mal.js +js/web/mal.js +kotlin/*.jar +kotlin/.idea +kotlin/*.iml +lua/lib +lua/linenoise.so +lua/mal.lua +make/mal.mk +mal/mal.mal +matlab/octave-workspace +miniMAL/mal.json +nim/nimcache* +objc/*.d +ocaml/*.cmi +ocaml/*.cmo +ocaml/*.swp +ocaml/*.cmx +ocaml/*.o +ocaml/mal_lib.* +objpascal/*.o +objpascal/*.ppu +objpascal/pas-readline +objpascal/regexpr/Source/RegExpr.ppu +perl/mal.pl +perl6/.precomp/ +php/mal.php +php/mal-web.php +ps/mal.ps +python/mal.pyz +r/mal.r +ruby/mal.rb +.cargo/ +rust/target/ +rust/Cargo.lock +rust/.cargo +r/lib +scala/mal.jar +scala/target +scala/project +skew/*.js +tcl/mal.tcl +vb/*.exe +vb/*.dll +vimscript/mal.vim +clisp/*.fas +clisp/*.lib +basic/step0_repl.bas +basic/step1_read_print.bas +basic/step2_eval.bas +basic/step3_env.bas +basic/step4_if_fn_do.bas +basic/step5_tco.bas +basic/step6_file.bas +basic/step7_quote.bas +basic/step8_macros.bas +basic/step9_try.bas +basic/stepA_mal.bas +basic/*.prg +common-lisp/*.fasl +common-lisp/*.lib +common-lisp/images/* +common-lisp/hist/* +livescript/*.js +!livescript/node_readline.js +livescript/node_modules +elm/node_modules +elm/elm-stuff +elm/*.js +!elm/node_readline.js +!elm/bootstrap.js +wasm/*.wat +wasm/*.wasm diff --git a/ada.2/Dockerfile b/impls/ada.2/Dockerfile similarity index 100% rename from ada.2/Dockerfile rename to impls/ada.2/Dockerfile diff --git a/ada.2/Makefile b/impls/ada.2/Makefile similarity index 100% rename from ada.2/Makefile rename to impls/ada.2/Makefile diff --git a/ada.2/README b/impls/ada.2/README similarity index 100% rename from ada.2/README rename to impls/ada.2/README diff --git a/ada.2/core.adb b/impls/ada.2/core.adb similarity index 100% rename from ada.2/core.adb rename to impls/ada.2/core.adb diff --git a/ada.2/core.ads b/impls/ada.2/core.ads similarity index 100% rename from ada.2/core.ads rename to impls/ada.2/core.ads diff --git a/ada.2/envs.adb b/impls/ada.2/envs.adb similarity index 100% rename from ada.2/envs.adb rename to impls/ada.2/envs.adb diff --git a/ada.2/envs.ads b/impls/ada.2/envs.ads similarity index 100% rename from ada.2/envs.ads rename to impls/ada.2/envs.ads diff --git a/ada.2/err.adb b/impls/ada.2/err.adb similarity index 100% rename from ada.2/err.adb rename to impls/ada.2/err.adb diff --git a/ada.2/err.ads b/impls/ada.2/err.ads similarity index 100% rename from ada.2/err.ads rename to impls/ada.2/err.ads diff --git a/ada.2/garbage_collected.adb b/impls/ada.2/garbage_collected.adb similarity index 100% rename from ada.2/garbage_collected.adb rename to impls/ada.2/garbage_collected.adb diff --git a/ada.2/garbage_collected.ads b/impls/ada.2/garbage_collected.ads similarity index 100% rename from ada.2/garbage_collected.ads rename to impls/ada.2/garbage_collected.ads diff --git a/ada.2/printer.adb b/impls/ada.2/printer.adb similarity index 100% rename from ada.2/printer.adb rename to impls/ada.2/printer.adb diff --git a/ada.2/printer.ads b/impls/ada.2/printer.ads similarity index 100% rename from ada.2/printer.ads rename to impls/ada.2/printer.ads diff --git a/ada.2/reader.adb b/impls/ada.2/reader.adb similarity index 100% rename from ada.2/reader.adb rename to impls/ada.2/reader.adb diff --git a/ada.2/reader.ads b/impls/ada.2/reader.ads similarity index 100% rename from ada.2/reader.ads rename to impls/ada.2/reader.ads diff --git a/ada.2/readline.adb b/impls/ada.2/readline.adb similarity index 100% rename from ada.2/readline.adb rename to impls/ada.2/readline.adb diff --git a/ada.2/readline.ads b/impls/ada.2/readline.ads similarity index 100% rename from ada.2/readline.ads rename to impls/ada.2/readline.ads diff --git a/ada.2/run b/impls/ada.2/run similarity index 100% rename from ada.2/run rename to impls/ada.2/run diff --git a/ada.2/step0_repl.adb b/impls/ada.2/step0_repl.adb similarity index 100% rename from ada.2/step0_repl.adb rename to impls/ada.2/step0_repl.adb diff --git a/ada.2/step1_read_print.adb b/impls/ada.2/step1_read_print.adb similarity index 100% rename from ada.2/step1_read_print.adb rename to impls/ada.2/step1_read_print.adb diff --git a/ada.2/step2_eval.adb b/impls/ada.2/step2_eval.adb similarity index 100% rename from ada.2/step2_eval.adb rename to impls/ada.2/step2_eval.adb diff --git a/ada.2/step3_env.adb b/impls/ada.2/step3_env.adb similarity index 100% rename from ada.2/step3_env.adb rename to impls/ada.2/step3_env.adb diff --git a/ada.2/step4_if_fn_do.adb b/impls/ada.2/step4_if_fn_do.adb similarity index 100% rename from ada.2/step4_if_fn_do.adb rename to impls/ada.2/step4_if_fn_do.adb diff --git a/ada.2/step5_tco.adb b/impls/ada.2/step5_tco.adb similarity index 100% rename from ada.2/step5_tco.adb rename to impls/ada.2/step5_tco.adb diff --git a/ada.2/step6_file.adb b/impls/ada.2/step6_file.adb similarity index 100% rename from ada.2/step6_file.adb rename to impls/ada.2/step6_file.adb diff --git a/ada.2/step7_quote.adb b/impls/ada.2/step7_quote.adb similarity index 100% rename from ada.2/step7_quote.adb rename to impls/ada.2/step7_quote.adb diff --git a/ada.2/step8_macros.adb b/impls/ada.2/step8_macros.adb similarity index 100% rename from ada.2/step8_macros.adb rename to impls/ada.2/step8_macros.adb diff --git a/ada.2/step9_try.adb b/impls/ada.2/step9_try.adb similarity index 100% rename from ada.2/step9_try.adb rename to impls/ada.2/step9_try.adb diff --git a/ada.2/stepa_mal.adb b/impls/ada.2/stepa_mal.adb similarity index 100% rename from ada.2/stepa_mal.adb rename to impls/ada.2/stepa_mal.adb diff --git a/ada.2/types-atoms.adb b/impls/ada.2/types-atoms.adb similarity index 100% rename from ada.2/types-atoms.adb rename to impls/ada.2/types-atoms.adb diff --git a/ada.2/types-atoms.ads b/impls/ada.2/types-atoms.ads similarity index 100% rename from ada.2/types-atoms.ads rename to impls/ada.2/types-atoms.ads diff --git a/ada.2/types-builtins.adb b/impls/ada.2/types-builtins.adb similarity index 100% rename from ada.2/types-builtins.adb rename to impls/ada.2/types-builtins.adb diff --git a/ada.2/types-builtins.ads b/impls/ada.2/types-builtins.ads similarity index 100% rename from ada.2/types-builtins.ads rename to impls/ada.2/types-builtins.ads diff --git a/ada.2/types-fns.adb b/impls/ada.2/types-fns.adb similarity index 100% rename from ada.2/types-fns.adb rename to impls/ada.2/types-fns.adb diff --git a/ada.2/types-fns.ads b/impls/ada.2/types-fns.ads similarity index 100% rename from ada.2/types-fns.ads rename to impls/ada.2/types-fns.ads diff --git a/ada.2/types-maps.adb b/impls/ada.2/types-maps.adb similarity index 100% rename from ada.2/types-maps.adb rename to impls/ada.2/types-maps.adb diff --git a/ada.2/types-maps.ads b/impls/ada.2/types-maps.ads similarity index 100% rename from ada.2/types-maps.ads rename to impls/ada.2/types-maps.ads diff --git a/ada.2/types-sequences.adb b/impls/ada.2/types-sequences.adb similarity index 100% rename from ada.2/types-sequences.adb rename to impls/ada.2/types-sequences.adb diff --git a/ada.2/types-sequences.ads b/impls/ada.2/types-sequences.ads similarity index 100% rename from ada.2/types-sequences.ads rename to impls/ada.2/types-sequences.ads diff --git a/ada.2/types-strings.adb b/impls/ada.2/types-strings.adb similarity index 100% rename from ada.2/types-strings.adb rename to impls/ada.2/types-strings.adb diff --git a/ada.2/types-strings.ads b/impls/ada.2/types-strings.ads similarity index 100% rename from ada.2/types-strings.ads rename to impls/ada.2/types-strings.ads diff --git a/ada.2/types.adb b/impls/ada.2/types.adb similarity index 100% rename from ada.2/types.adb rename to impls/ada.2/types.adb diff --git a/ada.2/types.ads b/impls/ada.2/types.ads similarity index 100% rename from ada.2/types.ads rename to impls/ada.2/types.ads diff --git a/ada/Dockerfile b/impls/ada/Dockerfile similarity index 100% rename from ada/Dockerfile rename to impls/ada/Dockerfile diff --git a/ada/Makefile b/impls/ada/Makefile similarity index 100% rename from ada/Makefile rename to impls/ada/Makefile diff --git a/ada/core.adb b/impls/ada/core.adb similarity index 100% rename from ada/core.adb rename to impls/ada/core.adb diff --git a/ada/core.ads b/impls/ada/core.ads similarity index 100% rename from ada/core.ads rename to impls/ada/core.ads diff --git a/ada/envs.adb b/impls/ada/envs.adb similarity index 100% rename from ada/envs.adb rename to impls/ada/envs.adb diff --git a/ada/envs.ads b/impls/ada/envs.ads similarity index 100% rename from ada/envs.ads rename to impls/ada/envs.ads diff --git a/ada/eval_callback.ads b/impls/ada/eval_callback.ads similarity index 100% rename from ada/eval_callback.ads rename to impls/ada/eval_callback.ads diff --git a/ada/printer.adb b/impls/ada/printer.adb similarity index 100% rename from ada/printer.adb rename to impls/ada/printer.adb diff --git a/ada/printer.ads b/impls/ada/printer.ads similarity index 100% rename from ada/printer.ads rename to impls/ada/printer.ads diff --git a/ada/reader.adb b/impls/ada/reader.adb similarity index 100% rename from ada/reader.adb rename to impls/ada/reader.adb diff --git a/ada/reader.ads b/impls/ada/reader.ads similarity index 100% rename from ada/reader.ads rename to impls/ada/reader.ads diff --git a/ada/run b/impls/ada/run similarity index 100% rename from ada/run rename to impls/ada/run diff --git a/ada/smart_pointers.adb b/impls/ada/smart_pointers.adb similarity index 100% rename from ada/smart_pointers.adb rename to impls/ada/smart_pointers.adb diff --git a/ada/smart_pointers.ads b/impls/ada/smart_pointers.ads similarity index 100% rename from ada/smart_pointers.ads rename to impls/ada/smart_pointers.ads diff --git a/ada/step0_repl.adb b/impls/ada/step0_repl.adb similarity index 100% rename from ada/step0_repl.adb rename to impls/ada/step0_repl.adb diff --git a/ada/step1_read_print.adb b/impls/ada/step1_read_print.adb similarity index 100% rename from ada/step1_read_print.adb rename to impls/ada/step1_read_print.adb diff --git a/ada/step2_eval.adb b/impls/ada/step2_eval.adb similarity index 100% rename from ada/step2_eval.adb rename to impls/ada/step2_eval.adb diff --git a/ada/step3_env.adb b/impls/ada/step3_env.adb similarity index 100% rename from ada/step3_env.adb rename to impls/ada/step3_env.adb diff --git a/ada/step4_if_fn_do.adb b/impls/ada/step4_if_fn_do.adb similarity index 100% rename from ada/step4_if_fn_do.adb rename to impls/ada/step4_if_fn_do.adb diff --git a/ada/step5_tco.adb b/impls/ada/step5_tco.adb similarity index 100% rename from ada/step5_tco.adb rename to impls/ada/step5_tco.adb diff --git a/ada/step6_file.adb b/impls/ada/step6_file.adb similarity index 100% rename from ada/step6_file.adb rename to impls/ada/step6_file.adb diff --git a/ada/step7_quote.adb b/impls/ada/step7_quote.adb similarity index 100% rename from ada/step7_quote.adb rename to impls/ada/step7_quote.adb diff --git a/ada/step8_macros.adb b/impls/ada/step8_macros.adb similarity index 100% rename from ada/step8_macros.adb rename to impls/ada/step8_macros.adb diff --git a/ada/step9_try.adb b/impls/ada/step9_try.adb similarity index 100% rename from ada/step9_try.adb rename to impls/ada/step9_try.adb diff --git a/ada/stepa_mal.adb b/impls/ada/stepa_mal.adb similarity index 100% rename from ada/stepa_mal.adb rename to impls/ada/stepa_mal.adb diff --git a/ada/types-hash_map.adb b/impls/ada/types-hash_map.adb similarity index 100% rename from ada/types-hash_map.adb rename to impls/ada/types-hash_map.adb diff --git a/ada/types-hash_map.ads b/impls/ada/types-hash_map.ads similarity index 100% rename from ada/types-hash_map.ads rename to impls/ada/types-hash_map.ads diff --git a/ada/types-vector.adb b/impls/ada/types-vector.adb similarity index 100% rename from ada/types-vector.adb rename to impls/ada/types-vector.adb diff --git a/ada/types-vector.ads b/impls/ada/types-vector.ads similarity index 100% rename from ada/types-vector.ads rename to impls/ada/types-vector.ads diff --git a/ada/types.adb b/impls/ada/types.adb similarity index 100% rename from ada/types.adb rename to impls/ada/types.adb diff --git a/ada/types.ads b/impls/ada/types.ads similarity index 100% rename from ada/types.ads rename to impls/ada/types.ads diff --git a/awk/Dockerfile b/impls/awk/Dockerfile similarity index 100% rename from awk/Dockerfile rename to impls/awk/Dockerfile diff --git a/awk/Makefile b/impls/awk/Makefile similarity index 100% rename from awk/Makefile rename to impls/awk/Makefile diff --git a/awk/core.awk b/impls/awk/core.awk similarity index 100% rename from awk/core.awk rename to impls/awk/core.awk diff --git a/awk/env.awk b/impls/awk/env.awk similarity index 100% rename from awk/env.awk rename to impls/awk/env.awk diff --git a/awk/printer.awk b/impls/awk/printer.awk similarity index 100% rename from awk/printer.awk rename to impls/awk/printer.awk diff --git a/awk/reader.awk b/impls/awk/reader.awk similarity index 100% rename from awk/reader.awk rename to impls/awk/reader.awk diff --git a/awk/run b/impls/awk/run similarity index 100% rename from awk/run rename to impls/awk/run diff --git a/awk/step0_repl.awk b/impls/awk/step0_repl.awk similarity index 100% rename from awk/step0_repl.awk rename to impls/awk/step0_repl.awk diff --git a/awk/step1_read_print.awk b/impls/awk/step1_read_print.awk similarity index 100% rename from awk/step1_read_print.awk rename to impls/awk/step1_read_print.awk diff --git a/awk/step2_eval.awk b/impls/awk/step2_eval.awk similarity index 100% rename from awk/step2_eval.awk rename to impls/awk/step2_eval.awk diff --git a/awk/step3_env.awk b/impls/awk/step3_env.awk similarity index 100% rename from awk/step3_env.awk rename to impls/awk/step3_env.awk diff --git a/awk/step4_if_fn_do.awk b/impls/awk/step4_if_fn_do.awk similarity index 100% rename from awk/step4_if_fn_do.awk rename to impls/awk/step4_if_fn_do.awk diff --git a/awk/step5_tco.awk b/impls/awk/step5_tco.awk similarity index 100% rename from awk/step5_tco.awk rename to impls/awk/step5_tco.awk diff --git a/awk/step6_file.awk b/impls/awk/step6_file.awk similarity index 100% rename from awk/step6_file.awk rename to impls/awk/step6_file.awk diff --git a/awk/step7_quote.awk b/impls/awk/step7_quote.awk similarity index 100% rename from awk/step7_quote.awk rename to impls/awk/step7_quote.awk diff --git a/awk/step8_macros.awk b/impls/awk/step8_macros.awk similarity index 100% rename from awk/step8_macros.awk rename to impls/awk/step8_macros.awk diff --git a/awk/step9_try.awk b/impls/awk/step9_try.awk similarity index 100% rename from awk/step9_try.awk rename to impls/awk/step9_try.awk diff --git a/awk/stepA_mal.awk b/impls/awk/stepA_mal.awk similarity index 100% rename from awk/stepA_mal.awk rename to impls/awk/stepA_mal.awk diff --git a/awk/tests/step5_tco.mal b/impls/awk/tests/step5_tco.mal similarity index 100% rename from awk/tests/step5_tco.mal rename to impls/awk/tests/step5_tco.mal diff --git a/awk/types.awk b/impls/awk/types.awk similarity index 100% rename from awk/types.awk rename to impls/awk/types.awk diff --git a/bash/Dockerfile b/impls/bash/Dockerfile similarity index 100% rename from bash/Dockerfile rename to impls/bash/Dockerfile diff --git a/bash/Makefile b/impls/bash/Makefile similarity index 100% rename from bash/Makefile rename to impls/bash/Makefile diff --git a/bash/core.sh b/impls/bash/core.sh similarity index 100% rename from bash/core.sh rename to impls/bash/core.sh diff --git a/bash/env.sh b/impls/bash/env.sh similarity index 100% rename from bash/env.sh rename to impls/bash/env.sh diff --git a/bash/printer.sh b/impls/bash/printer.sh similarity index 100% rename from bash/printer.sh rename to impls/bash/printer.sh diff --git a/bash/reader.sh b/impls/bash/reader.sh similarity index 100% rename from bash/reader.sh rename to impls/bash/reader.sh diff --git a/bash/run b/impls/bash/run similarity index 100% rename from bash/run rename to impls/bash/run diff --git a/bash/step0_repl.sh b/impls/bash/step0_repl.sh similarity index 100% rename from bash/step0_repl.sh rename to impls/bash/step0_repl.sh diff --git a/bash/step1_read_print.sh b/impls/bash/step1_read_print.sh similarity index 100% rename from bash/step1_read_print.sh rename to impls/bash/step1_read_print.sh diff --git a/bash/step2_eval.sh b/impls/bash/step2_eval.sh similarity index 100% rename from bash/step2_eval.sh rename to impls/bash/step2_eval.sh diff --git a/bash/step3_env.sh b/impls/bash/step3_env.sh similarity index 100% rename from bash/step3_env.sh rename to impls/bash/step3_env.sh diff --git a/bash/step4_if_fn_do.sh b/impls/bash/step4_if_fn_do.sh similarity index 100% rename from bash/step4_if_fn_do.sh rename to impls/bash/step4_if_fn_do.sh diff --git a/bash/step5_tco.sh b/impls/bash/step5_tco.sh similarity index 100% rename from bash/step5_tco.sh rename to impls/bash/step5_tco.sh diff --git a/bash/step6_file.sh b/impls/bash/step6_file.sh similarity index 100% rename from bash/step6_file.sh rename to impls/bash/step6_file.sh diff --git a/bash/step7_quote.sh b/impls/bash/step7_quote.sh similarity index 100% rename from bash/step7_quote.sh rename to impls/bash/step7_quote.sh diff --git a/bash/step8_macros.sh b/impls/bash/step8_macros.sh similarity index 100% rename from bash/step8_macros.sh rename to impls/bash/step8_macros.sh diff --git a/bash/step9_try.sh b/impls/bash/step9_try.sh similarity index 100% rename from bash/step9_try.sh rename to impls/bash/step9_try.sh diff --git a/bash/stepA_mal.sh b/impls/bash/stepA_mal.sh similarity index 100% rename from bash/stepA_mal.sh rename to impls/bash/stepA_mal.sh diff --git a/bash/tests/stepA_mal.mal b/impls/bash/tests/stepA_mal.mal similarity index 100% rename from bash/tests/stepA_mal.mal rename to impls/bash/tests/stepA_mal.mal diff --git a/bash/types.sh b/impls/bash/types.sh similarity index 100% rename from bash/types.sh rename to impls/bash/types.sh diff --git a/basic/.args.mal b/impls/basic/.args.mal similarity index 100% rename from basic/.args.mal rename to impls/basic/.args.mal diff --git a/basic/Dockerfile b/impls/basic/Dockerfile similarity index 100% rename from basic/Dockerfile rename to impls/basic/Dockerfile diff --git a/basic/Makefile b/impls/basic/Makefile similarity index 100% rename from basic/Makefile rename to impls/basic/Makefile diff --git a/basic/basicpp.py b/impls/basic/basicpp.py similarity index 100% rename from basic/basicpp.py rename to impls/basic/basicpp.py diff --git a/basic/cbmbasic_console.patch b/impls/basic/cbmbasic_console.patch similarity index 100% rename from basic/cbmbasic_console.patch rename to impls/basic/cbmbasic_console.patch diff --git a/basic/core.in.bas b/impls/basic/core.in.bas similarity index 100% rename from basic/core.in.bas rename to impls/basic/core.in.bas diff --git a/basic/debug.in.bas b/impls/basic/debug.in.bas similarity index 100% rename from basic/debug.in.bas rename to impls/basic/debug.in.bas diff --git a/basic/env.in.bas b/impls/basic/env.in.bas similarity index 100% rename from basic/env.in.bas rename to impls/basic/env.in.bas diff --git a/basic/mem.in.bas b/impls/basic/mem.in.bas similarity index 100% rename from basic/mem.in.bas rename to impls/basic/mem.in.bas diff --git a/basic/printer.in.bas b/impls/basic/printer.in.bas similarity index 100% rename from basic/printer.in.bas rename to impls/basic/printer.in.bas diff --git a/basic/reader.in.bas b/impls/basic/reader.in.bas similarity index 100% rename from basic/reader.in.bas rename to impls/basic/reader.in.bas diff --git a/basic/readline.in.bas b/impls/basic/readline.in.bas similarity index 100% rename from basic/readline.in.bas rename to impls/basic/readline.in.bas diff --git a/basic/readline_char.in.bas b/impls/basic/readline_char.in.bas similarity index 100% rename from basic/readline_char.in.bas rename to impls/basic/readline_char.in.bas diff --git a/basic/readline_line.in.bas b/impls/basic/readline_line.in.bas similarity index 100% rename from basic/readline_line.in.bas rename to impls/basic/readline_line.in.bas diff --git a/basic/run b/impls/basic/run similarity index 100% rename from basic/run rename to impls/basic/run diff --git a/basic/step0_repl.in.bas b/impls/basic/step0_repl.in.bas similarity index 100% rename from basic/step0_repl.in.bas rename to impls/basic/step0_repl.in.bas diff --git a/basic/step1_read_print.in.bas b/impls/basic/step1_read_print.in.bas similarity index 100% rename from basic/step1_read_print.in.bas rename to impls/basic/step1_read_print.in.bas diff --git a/basic/step2_eval.in.bas b/impls/basic/step2_eval.in.bas similarity index 100% rename from basic/step2_eval.in.bas rename to impls/basic/step2_eval.in.bas diff --git a/basic/step3_env.in.bas b/impls/basic/step3_env.in.bas similarity index 100% rename from basic/step3_env.in.bas rename to impls/basic/step3_env.in.bas diff --git a/basic/step4_if_fn_do.in.bas b/impls/basic/step4_if_fn_do.in.bas similarity index 100% rename from basic/step4_if_fn_do.in.bas rename to impls/basic/step4_if_fn_do.in.bas diff --git a/basic/step5_tco.in.bas b/impls/basic/step5_tco.in.bas similarity index 100% rename from basic/step5_tco.in.bas rename to impls/basic/step5_tco.in.bas diff --git a/basic/step6_file.in.bas b/impls/basic/step6_file.in.bas similarity index 100% rename from basic/step6_file.in.bas rename to impls/basic/step6_file.in.bas diff --git a/basic/step7_quote.in.bas b/impls/basic/step7_quote.in.bas similarity index 100% rename from basic/step7_quote.in.bas rename to impls/basic/step7_quote.in.bas diff --git a/basic/step8_macros.in.bas b/impls/basic/step8_macros.in.bas similarity index 100% rename from basic/step8_macros.in.bas rename to impls/basic/step8_macros.in.bas diff --git a/basic/step9_try.in.bas b/impls/basic/step9_try.in.bas similarity index 100% rename from basic/step9_try.in.bas rename to impls/basic/step9_try.in.bas diff --git a/basic/stepA_mal.in.bas b/impls/basic/stepA_mal.in.bas similarity index 100% rename from basic/stepA_mal.in.bas rename to impls/basic/stepA_mal.in.bas diff --git a/basic/types.in.bas b/impls/basic/types.in.bas similarity index 100% rename from basic/types.in.bas rename to impls/basic/types.in.bas diff --git a/basic/variables.txt b/impls/basic/variables.txt similarity index 100% rename from basic/variables.txt rename to impls/basic/variables.txt diff --git a/bbc-basic/Dockerfile b/impls/bbc-basic/Dockerfile similarity index 100% rename from bbc-basic/Dockerfile rename to impls/bbc-basic/Dockerfile diff --git a/bbc-basic/Makefile b/impls/bbc-basic/Makefile similarity index 100% rename from bbc-basic/Makefile rename to impls/bbc-basic/Makefile diff --git a/bbc-basic/README.md b/impls/bbc-basic/README.md similarity index 100% rename from bbc-basic/README.md rename to impls/bbc-basic/README.md diff --git a/bbc-basic/core b/impls/bbc-basic/core similarity index 100% rename from bbc-basic/core rename to impls/bbc-basic/core diff --git a/bbc-basic/core.bas b/impls/bbc-basic/core.bas similarity index 100% rename from bbc-basic/core.bas rename to impls/bbc-basic/core.bas diff --git a/bbc-basic/env b/impls/bbc-basic/env similarity index 100% rename from bbc-basic/env rename to impls/bbc-basic/env diff --git a/bbc-basic/env.bas b/impls/bbc-basic/env.bas similarity index 100% rename from bbc-basic/env.bas rename to impls/bbc-basic/env.bas diff --git a/bbc-basic/printer b/impls/bbc-basic/printer similarity index 100% rename from bbc-basic/printer rename to impls/bbc-basic/printer diff --git a/bbc-basic/printer.bas b/impls/bbc-basic/printer.bas similarity index 100% rename from bbc-basic/printer.bas rename to impls/bbc-basic/printer.bas diff --git a/bbc-basic/reader b/impls/bbc-basic/reader similarity index 100% rename from bbc-basic/reader rename to impls/bbc-basic/reader diff --git a/bbc-basic/reader.bas b/impls/bbc-basic/reader.bas similarity index 100% rename from bbc-basic/reader.bas rename to impls/bbc-basic/reader.bas diff --git a/bbc-basic/riscos/.gitignore b/impls/bbc-basic/riscos/.gitignore similarity index 100% rename from bbc-basic/riscos/.gitignore rename to impls/bbc-basic/riscos/.gitignore diff --git a/bbc-basic/riscos/setup,feb b/impls/bbc-basic/riscos/setup,feb similarity index 100% rename from bbc-basic/riscos/setup,feb rename to impls/bbc-basic/riscos/setup,feb diff --git a/bbc-basic/riscos/tokenize,ffe b/impls/bbc-basic/riscos/tokenize,ffe similarity index 100% rename from bbc-basic/riscos/tokenize,ffe rename to impls/bbc-basic/riscos/tokenize,ffe diff --git a/bbc-basic/run b/impls/bbc-basic/run similarity index 100% rename from bbc-basic/run rename to impls/bbc-basic/run diff --git a/bbc-basic/step0_repl.bas b/impls/bbc-basic/step0_repl.bas similarity index 100% rename from bbc-basic/step0_repl.bas rename to impls/bbc-basic/step0_repl.bas diff --git a/bbc-basic/step1_read_print.bas b/impls/bbc-basic/step1_read_print.bas similarity index 100% rename from bbc-basic/step1_read_print.bas rename to impls/bbc-basic/step1_read_print.bas diff --git a/bbc-basic/step2_eval.bas b/impls/bbc-basic/step2_eval.bas similarity index 100% rename from bbc-basic/step2_eval.bas rename to impls/bbc-basic/step2_eval.bas diff --git a/bbc-basic/step3_env.bas b/impls/bbc-basic/step3_env.bas similarity index 100% rename from bbc-basic/step3_env.bas rename to impls/bbc-basic/step3_env.bas diff --git a/bbc-basic/step4_if_fn_do.bas b/impls/bbc-basic/step4_if_fn_do.bas similarity index 100% rename from bbc-basic/step4_if_fn_do.bas rename to impls/bbc-basic/step4_if_fn_do.bas diff --git a/bbc-basic/step5_tco.bas b/impls/bbc-basic/step5_tco.bas similarity index 100% rename from bbc-basic/step5_tco.bas rename to impls/bbc-basic/step5_tco.bas diff --git a/bbc-basic/step6_file.bas b/impls/bbc-basic/step6_file.bas similarity index 100% rename from bbc-basic/step6_file.bas rename to impls/bbc-basic/step6_file.bas diff --git a/bbc-basic/step7_quote.bas b/impls/bbc-basic/step7_quote.bas similarity index 100% rename from bbc-basic/step7_quote.bas rename to impls/bbc-basic/step7_quote.bas diff --git a/bbc-basic/step8_macros.bas b/impls/bbc-basic/step8_macros.bas similarity index 100% rename from bbc-basic/step8_macros.bas rename to impls/bbc-basic/step8_macros.bas diff --git a/bbc-basic/step9_try.bas b/impls/bbc-basic/step9_try.bas similarity index 100% rename from bbc-basic/step9_try.bas rename to impls/bbc-basic/step9_try.bas diff --git a/bbc-basic/stepA_mal.bas b/impls/bbc-basic/stepA_mal.bas similarity index 100% rename from bbc-basic/stepA_mal.bas rename to impls/bbc-basic/stepA_mal.bas diff --git a/bbc-basic/types b/impls/bbc-basic/types similarity index 100% rename from bbc-basic/types rename to impls/bbc-basic/types diff --git a/bbc-basic/types.bas b/impls/bbc-basic/types.bas similarity index 100% rename from bbc-basic/types.bas rename to impls/bbc-basic/types.bas diff --git a/c/Dockerfile b/impls/c/Dockerfile similarity index 100% rename from c/Dockerfile rename to impls/c/Dockerfile diff --git a/c/Makefile b/impls/c/Makefile similarity index 100% rename from c/Makefile rename to impls/c/Makefile diff --git a/c/core.c b/impls/c/core.c similarity index 100% rename from c/core.c rename to impls/c/core.c diff --git a/c/core.h b/impls/c/core.h similarity index 100% rename from c/core.h rename to impls/c/core.h diff --git a/c/env.c b/impls/c/env.c similarity index 100% rename from c/env.c rename to impls/c/env.c diff --git a/c/interop.c b/impls/c/interop.c similarity index 100% rename from c/interop.c rename to impls/c/interop.c diff --git a/c/interop.h b/impls/c/interop.h similarity index 100% rename from c/interop.h rename to impls/c/interop.h diff --git a/c/printer.c b/impls/c/printer.c similarity index 100% rename from c/printer.c rename to impls/c/printer.c diff --git a/c/printer.h b/impls/c/printer.h similarity index 100% rename from c/printer.h rename to impls/c/printer.h diff --git a/c/reader.c b/impls/c/reader.c similarity index 100% rename from c/reader.c rename to impls/c/reader.c diff --git a/c/reader.h b/impls/c/reader.h similarity index 100% rename from c/reader.h rename to impls/c/reader.h diff --git a/c/readline.c b/impls/c/readline.c similarity index 100% rename from c/readline.c rename to impls/c/readline.c diff --git a/c/readline.h b/impls/c/readline.h similarity index 100% rename from c/readline.h rename to impls/c/readline.h diff --git a/c/run b/impls/c/run similarity index 100% rename from c/run rename to impls/c/run diff --git a/c/step0_repl.c b/impls/c/step0_repl.c similarity index 100% rename from c/step0_repl.c rename to impls/c/step0_repl.c diff --git a/c/step1_read_print.c b/impls/c/step1_read_print.c similarity index 100% rename from c/step1_read_print.c rename to impls/c/step1_read_print.c diff --git a/c/step2_eval.c b/impls/c/step2_eval.c similarity index 100% rename from c/step2_eval.c rename to impls/c/step2_eval.c diff --git a/c/step3_env.c b/impls/c/step3_env.c similarity index 100% rename from c/step3_env.c rename to impls/c/step3_env.c diff --git a/c/step4_if_fn_do.c b/impls/c/step4_if_fn_do.c similarity index 100% rename from c/step4_if_fn_do.c rename to impls/c/step4_if_fn_do.c diff --git a/c/step5_tco.c b/impls/c/step5_tco.c similarity index 100% rename from c/step5_tco.c rename to impls/c/step5_tco.c diff --git a/c/step6_file.c b/impls/c/step6_file.c similarity index 100% rename from c/step6_file.c rename to impls/c/step6_file.c diff --git a/c/step7_quote.c b/impls/c/step7_quote.c similarity index 100% rename from c/step7_quote.c rename to impls/c/step7_quote.c diff --git a/c/step8_macros.c b/impls/c/step8_macros.c similarity index 100% rename from c/step8_macros.c rename to impls/c/step8_macros.c diff --git a/c/step9_try.c b/impls/c/step9_try.c similarity index 100% rename from c/step9_try.c rename to impls/c/step9_try.c diff --git a/c/stepA_mal.c b/impls/c/stepA_mal.c similarity index 100% rename from c/stepA_mal.c rename to impls/c/stepA_mal.c diff --git a/c/tests/step5_tco.mal b/impls/c/tests/step5_tco.mal similarity index 100% rename from c/tests/step5_tco.mal rename to impls/c/tests/step5_tco.mal diff --git a/c/tests/stepA_mal.mal b/impls/c/tests/stepA_mal.mal similarity index 100% rename from c/tests/stepA_mal.mal rename to impls/c/tests/stepA_mal.mal diff --git a/c/types.c b/impls/c/types.c similarity index 100% rename from c/types.c rename to impls/c/types.c diff --git a/c/types.h b/impls/c/types.h similarity index 100% rename from c/types.h rename to impls/c/types.h diff --git a/chuck/Dockerfile b/impls/chuck/Dockerfile similarity index 100% rename from chuck/Dockerfile rename to impls/chuck/Dockerfile diff --git a/chuck/Makefile b/impls/chuck/Makefile similarity index 100% rename from chuck/Makefile rename to impls/chuck/Makefile diff --git a/chuck/chuck.md b/impls/chuck/chuck.md similarity index 100% rename from chuck/chuck.md rename to impls/chuck/chuck.md diff --git a/chuck/core.ck b/impls/chuck/core.ck similarity index 100% rename from chuck/core.ck rename to impls/chuck/core.ck diff --git a/chuck/env.ck b/impls/chuck/env.ck similarity index 100% rename from chuck/env.ck rename to impls/chuck/env.ck diff --git a/chuck/func.ck b/impls/chuck/func.ck similarity index 100% rename from chuck/func.ck rename to impls/chuck/func.ck diff --git a/chuck/notes.md b/impls/chuck/notes.md similarity index 100% rename from chuck/notes.md rename to impls/chuck/notes.md diff --git a/chuck/printer.ck b/impls/chuck/printer.ck similarity index 100% rename from chuck/printer.ck rename to impls/chuck/printer.ck diff --git a/chuck/reader.ck b/impls/chuck/reader.ck similarity index 100% rename from chuck/reader.ck rename to impls/chuck/reader.ck diff --git a/chuck/readline.ck b/impls/chuck/readline.ck similarity index 100% rename from chuck/readline.ck rename to impls/chuck/readline.ck diff --git a/chuck/run b/impls/chuck/run similarity index 100% rename from chuck/run rename to impls/chuck/run diff --git a/chuck/step0_repl.ck b/impls/chuck/step0_repl.ck similarity index 100% rename from chuck/step0_repl.ck rename to impls/chuck/step0_repl.ck diff --git a/chuck/step1_read_print.ck b/impls/chuck/step1_read_print.ck similarity index 100% rename from chuck/step1_read_print.ck rename to impls/chuck/step1_read_print.ck diff --git a/chuck/step2_eval.ck b/impls/chuck/step2_eval.ck similarity index 100% rename from chuck/step2_eval.ck rename to impls/chuck/step2_eval.ck diff --git a/chuck/step3_env.ck b/impls/chuck/step3_env.ck similarity index 100% rename from chuck/step3_env.ck rename to impls/chuck/step3_env.ck diff --git a/chuck/step4_if_fn_do.ck b/impls/chuck/step4_if_fn_do.ck similarity index 100% rename from chuck/step4_if_fn_do.ck rename to impls/chuck/step4_if_fn_do.ck diff --git a/chuck/step5_tco.ck b/impls/chuck/step5_tco.ck similarity index 100% rename from chuck/step5_tco.ck rename to impls/chuck/step5_tco.ck diff --git a/chuck/step6_file.ck b/impls/chuck/step6_file.ck similarity index 100% rename from chuck/step6_file.ck rename to impls/chuck/step6_file.ck diff --git a/chuck/step7_quote.ck b/impls/chuck/step7_quote.ck similarity index 100% rename from chuck/step7_quote.ck rename to impls/chuck/step7_quote.ck diff --git a/chuck/step8_macros.ck b/impls/chuck/step8_macros.ck similarity index 100% rename from chuck/step8_macros.ck rename to impls/chuck/step8_macros.ck diff --git a/chuck/step9_try.ck b/impls/chuck/step9_try.ck similarity index 100% rename from chuck/step9_try.ck rename to impls/chuck/step9_try.ck diff --git a/chuck/stepA_mal.ck b/impls/chuck/stepA_mal.ck similarity index 100% rename from chuck/stepA_mal.ck rename to impls/chuck/stepA_mal.ck diff --git a/chuck/tests/step5_tco.mal b/impls/chuck/tests/step5_tco.mal similarity index 100% rename from chuck/tests/step5_tco.mal rename to impls/chuck/tests/step5_tco.mal diff --git a/chuck/types/MalObject.ck b/impls/chuck/types/MalObject.ck similarity index 100% rename from chuck/types/MalObject.ck rename to impls/chuck/types/MalObject.ck diff --git a/chuck/types/MalSubr.ck b/impls/chuck/types/MalSubr.ck similarity index 100% rename from chuck/types/MalSubr.ck rename to impls/chuck/types/MalSubr.ck diff --git a/chuck/types/boxed/Int.ck b/impls/chuck/types/boxed/Int.ck similarity index 100% rename from chuck/types/boxed/Int.ck rename to impls/chuck/types/boxed/Int.ck diff --git a/chuck/types/boxed/String.ck b/impls/chuck/types/boxed/String.ck similarity index 100% rename from chuck/types/boxed/String.ck rename to impls/chuck/types/boxed/String.ck diff --git a/chuck/types/mal/MalAtom.ck b/impls/chuck/types/mal/MalAtom.ck similarity index 100% rename from chuck/types/mal/MalAtom.ck rename to impls/chuck/types/mal/MalAtom.ck diff --git a/chuck/types/mal/MalError.ck b/impls/chuck/types/mal/MalError.ck similarity index 100% rename from chuck/types/mal/MalError.ck rename to impls/chuck/types/mal/MalError.ck diff --git a/chuck/types/mal/MalFalse.ck b/impls/chuck/types/mal/MalFalse.ck similarity index 100% rename from chuck/types/mal/MalFalse.ck rename to impls/chuck/types/mal/MalFalse.ck diff --git a/chuck/types/mal/MalHashMap.ck b/impls/chuck/types/mal/MalHashMap.ck similarity index 100% rename from chuck/types/mal/MalHashMap.ck rename to impls/chuck/types/mal/MalHashMap.ck diff --git a/chuck/types/mal/MalInt.ck b/impls/chuck/types/mal/MalInt.ck similarity index 100% rename from chuck/types/mal/MalInt.ck rename to impls/chuck/types/mal/MalInt.ck diff --git a/chuck/types/mal/MalKeyword.ck b/impls/chuck/types/mal/MalKeyword.ck similarity index 100% rename from chuck/types/mal/MalKeyword.ck rename to impls/chuck/types/mal/MalKeyword.ck diff --git a/chuck/types/mal/MalList.ck b/impls/chuck/types/mal/MalList.ck similarity index 100% rename from chuck/types/mal/MalList.ck rename to impls/chuck/types/mal/MalList.ck diff --git a/chuck/types/mal/MalNil.ck b/impls/chuck/types/mal/MalNil.ck similarity index 100% rename from chuck/types/mal/MalNil.ck rename to impls/chuck/types/mal/MalNil.ck diff --git a/chuck/types/mal/MalString.ck b/impls/chuck/types/mal/MalString.ck similarity index 100% rename from chuck/types/mal/MalString.ck rename to impls/chuck/types/mal/MalString.ck diff --git a/chuck/types/mal/MalSymbol.ck b/impls/chuck/types/mal/MalSymbol.ck similarity index 100% rename from chuck/types/mal/MalSymbol.ck rename to impls/chuck/types/mal/MalSymbol.ck diff --git a/chuck/types/mal/MalTrue.ck b/impls/chuck/types/mal/MalTrue.ck similarity index 100% rename from chuck/types/mal/MalTrue.ck rename to impls/chuck/types/mal/MalTrue.ck diff --git a/chuck/types/mal/MalVector.ck b/impls/chuck/types/mal/MalVector.ck similarity index 100% rename from chuck/types/mal/MalVector.ck rename to impls/chuck/types/mal/MalVector.ck diff --git a/chuck/types/subr/MalAdd.ck b/impls/chuck/types/subr/MalAdd.ck similarity index 100% rename from chuck/types/subr/MalAdd.ck rename to impls/chuck/types/subr/MalAdd.ck diff --git a/chuck/types/subr/MalApply.ck b/impls/chuck/types/subr/MalApply.ck similarity index 100% rename from chuck/types/subr/MalApply.ck rename to impls/chuck/types/subr/MalApply.ck diff --git a/chuck/types/subr/MalAssoc.ck b/impls/chuck/types/subr/MalAssoc.ck similarity index 100% rename from chuck/types/subr/MalAssoc.ck rename to impls/chuck/types/subr/MalAssoc.ck diff --git a/chuck/types/subr/MalAtomify.ck b/impls/chuck/types/subr/MalAtomify.ck similarity index 100% rename from chuck/types/subr/MalAtomify.ck rename to impls/chuck/types/subr/MalAtomify.ck diff --git a/chuck/types/subr/MalConcat.ck b/impls/chuck/types/subr/MalConcat.ck similarity index 100% rename from chuck/types/subr/MalConcat.ck rename to impls/chuck/types/subr/MalConcat.ck diff --git a/chuck/types/subr/MalConj.ck b/impls/chuck/types/subr/MalConj.ck similarity index 100% rename from chuck/types/subr/MalConj.ck rename to impls/chuck/types/subr/MalConj.ck diff --git a/chuck/types/subr/MalCons.ck b/impls/chuck/types/subr/MalCons.ck similarity index 100% rename from chuck/types/subr/MalCons.ck rename to impls/chuck/types/subr/MalCons.ck diff --git a/chuck/types/subr/MalCount.ck b/impls/chuck/types/subr/MalCount.ck similarity index 100% rename from chuck/types/subr/MalCount.ck rename to impls/chuck/types/subr/MalCount.ck diff --git a/chuck/types/subr/MalDeref.ck b/impls/chuck/types/subr/MalDeref.ck similarity index 100% rename from chuck/types/subr/MalDeref.ck rename to impls/chuck/types/subr/MalDeref.ck diff --git a/chuck/types/subr/MalDissoc.ck b/impls/chuck/types/subr/MalDissoc.ck similarity index 100% rename from chuck/types/subr/MalDissoc.ck rename to impls/chuck/types/subr/MalDissoc.ck diff --git a/chuck/types/subr/MalDiv.ck b/impls/chuck/types/subr/MalDiv.ck similarity index 100% rename from chuck/types/subr/MalDiv.ck rename to impls/chuck/types/subr/MalDiv.ck diff --git a/chuck/types/subr/MalDoReset.ck b/impls/chuck/types/subr/MalDoReset.ck similarity index 100% rename from chuck/types/subr/MalDoReset.ck rename to impls/chuck/types/subr/MalDoReset.ck diff --git a/chuck/types/subr/MalDoSwap.ck b/impls/chuck/types/subr/MalDoSwap.ck similarity index 100% rename from chuck/types/subr/MalDoSwap.ck rename to impls/chuck/types/subr/MalDoSwap.ck diff --git a/chuck/types/subr/MalEqual.ck b/impls/chuck/types/subr/MalEqual.ck similarity index 100% rename from chuck/types/subr/MalEqual.ck rename to impls/chuck/types/subr/MalEqual.ck diff --git a/chuck/types/subr/MalFirst.ck b/impls/chuck/types/subr/MalFirst.ck similarity index 100% rename from chuck/types/subr/MalFirst.ck rename to impls/chuck/types/subr/MalFirst.ck diff --git a/chuck/types/subr/MalGet.ck b/impls/chuck/types/subr/MalGet.ck similarity index 100% rename from chuck/types/subr/MalGet.ck rename to impls/chuck/types/subr/MalGet.ck diff --git a/chuck/types/subr/MalGreater.ck b/impls/chuck/types/subr/MalGreater.ck similarity index 100% rename from chuck/types/subr/MalGreater.ck rename to impls/chuck/types/subr/MalGreater.ck diff --git a/chuck/types/subr/MalGreaterEqual.ck b/impls/chuck/types/subr/MalGreaterEqual.ck similarity index 100% rename from chuck/types/subr/MalGreaterEqual.ck rename to impls/chuck/types/subr/MalGreaterEqual.ck diff --git a/chuck/types/subr/MalHashMapify.ck b/impls/chuck/types/subr/MalHashMapify.ck similarity index 100% rename from chuck/types/subr/MalHashMapify.ck rename to impls/chuck/types/subr/MalHashMapify.ck diff --git a/chuck/types/subr/MalIsAtom.ck b/impls/chuck/types/subr/MalIsAtom.ck similarity index 100% rename from chuck/types/subr/MalIsAtom.ck rename to impls/chuck/types/subr/MalIsAtom.ck diff --git a/chuck/types/subr/MalIsContains.ck b/impls/chuck/types/subr/MalIsContains.ck similarity index 100% rename from chuck/types/subr/MalIsContains.ck rename to impls/chuck/types/subr/MalIsContains.ck diff --git a/chuck/types/subr/MalIsEmpty.ck b/impls/chuck/types/subr/MalIsEmpty.ck similarity index 100% rename from chuck/types/subr/MalIsEmpty.ck rename to impls/chuck/types/subr/MalIsEmpty.ck diff --git a/chuck/types/subr/MalIsFalse.ck b/impls/chuck/types/subr/MalIsFalse.ck similarity index 100% rename from chuck/types/subr/MalIsFalse.ck rename to impls/chuck/types/subr/MalIsFalse.ck diff --git a/chuck/types/subr/MalIsFn.ck b/impls/chuck/types/subr/MalIsFn.ck similarity index 100% rename from chuck/types/subr/MalIsFn.ck rename to impls/chuck/types/subr/MalIsFn.ck diff --git a/chuck/types/subr/MalIsHashMap.ck b/impls/chuck/types/subr/MalIsHashMap.ck similarity index 100% rename from chuck/types/subr/MalIsHashMap.ck rename to impls/chuck/types/subr/MalIsHashMap.ck diff --git a/chuck/types/subr/MalIsKeyword.ck b/impls/chuck/types/subr/MalIsKeyword.ck similarity index 100% rename from chuck/types/subr/MalIsKeyword.ck rename to impls/chuck/types/subr/MalIsKeyword.ck diff --git a/chuck/types/subr/MalIsList.ck b/impls/chuck/types/subr/MalIsList.ck similarity index 100% rename from chuck/types/subr/MalIsList.ck rename to impls/chuck/types/subr/MalIsList.ck diff --git a/chuck/types/subr/MalIsMacro.ck b/impls/chuck/types/subr/MalIsMacro.ck similarity index 100% rename from chuck/types/subr/MalIsMacro.ck rename to impls/chuck/types/subr/MalIsMacro.ck diff --git a/chuck/types/subr/MalIsNil.ck b/impls/chuck/types/subr/MalIsNil.ck similarity index 100% rename from chuck/types/subr/MalIsNil.ck rename to impls/chuck/types/subr/MalIsNil.ck diff --git a/chuck/types/subr/MalIsNumber.ck b/impls/chuck/types/subr/MalIsNumber.ck similarity index 100% rename from chuck/types/subr/MalIsNumber.ck rename to impls/chuck/types/subr/MalIsNumber.ck diff --git a/chuck/types/subr/MalIsString.ck b/impls/chuck/types/subr/MalIsString.ck similarity index 100% rename from chuck/types/subr/MalIsString.ck rename to impls/chuck/types/subr/MalIsString.ck diff --git a/chuck/types/subr/MalIsSymbol.ck b/impls/chuck/types/subr/MalIsSymbol.ck similarity index 100% rename from chuck/types/subr/MalIsSymbol.ck rename to impls/chuck/types/subr/MalIsSymbol.ck diff --git a/chuck/types/subr/MalIsTrue.ck b/impls/chuck/types/subr/MalIsTrue.ck similarity index 100% rename from chuck/types/subr/MalIsTrue.ck rename to impls/chuck/types/subr/MalIsTrue.ck diff --git a/chuck/types/subr/MalIsVector.ck b/impls/chuck/types/subr/MalIsVector.ck similarity index 100% rename from chuck/types/subr/MalIsVector.ck rename to impls/chuck/types/subr/MalIsVector.ck diff --git a/chuck/types/subr/MalKeys.ck b/impls/chuck/types/subr/MalKeys.ck similarity index 100% rename from chuck/types/subr/MalKeys.ck rename to impls/chuck/types/subr/MalKeys.ck diff --git a/chuck/types/subr/MalKeywordify.ck b/impls/chuck/types/subr/MalKeywordify.ck similarity index 100% rename from chuck/types/subr/MalKeywordify.ck rename to impls/chuck/types/subr/MalKeywordify.ck diff --git a/chuck/types/subr/MalLess.ck b/impls/chuck/types/subr/MalLess.ck similarity index 100% rename from chuck/types/subr/MalLess.ck rename to impls/chuck/types/subr/MalLess.ck diff --git a/chuck/types/subr/MalLessEqual.ck b/impls/chuck/types/subr/MalLessEqual.ck similarity index 100% rename from chuck/types/subr/MalLessEqual.ck rename to impls/chuck/types/subr/MalLessEqual.ck diff --git a/chuck/types/subr/MalListify.ck b/impls/chuck/types/subr/MalListify.ck similarity index 100% rename from chuck/types/subr/MalListify.ck rename to impls/chuck/types/subr/MalListify.ck diff --git a/chuck/types/subr/MalMap.ck b/impls/chuck/types/subr/MalMap.ck similarity index 100% rename from chuck/types/subr/MalMap.ck rename to impls/chuck/types/subr/MalMap.ck diff --git a/chuck/types/subr/MalMeta.ck b/impls/chuck/types/subr/MalMeta.ck similarity index 100% rename from chuck/types/subr/MalMeta.ck rename to impls/chuck/types/subr/MalMeta.ck diff --git a/chuck/types/subr/MalMul.ck b/impls/chuck/types/subr/MalMul.ck similarity index 100% rename from chuck/types/subr/MalMul.ck rename to impls/chuck/types/subr/MalMul.ck diff --git a/chuck/types/subr/MalNth.ck b/impls/chuck/types/subr/MalNth.ck similarity index 100% rename from chuck/types/subr/MalNth.ck rename to impls/chuck/types/subr/MalNth.ck diff --git a/chuck/types/subr/MalPrStr.ck b/impls/chuck/types/subr/MalPrStr.ck similarity index 100% rename from chuck/types/subr/MalPrStr.ck rename to impls/chuck/types/subr/MalPrStr.ck diff --git a/chuck/types/subr/MalPrintln.ck b/impls/chuck/types/subr/MalPrintln.ck similarity index 100% rename from chuck/types/subr/MalPrintln.ck rename to impls/chuck/types/subr/MalPrintln.ck diff --git a/chuck/types/subr/MalPrn.ck b/impls/chuck/types/subr/MalPrn.ck similarity index 100% rename from chuck/types/subr/MalPrn.ck rename to impls/chuck/types/subr/MalPrn.ck diff --git a/chuck/types/subr/MalReadStr.ck b/impls/chuck/types/subr/MalReadStr.ck similarity index 100% rename from chuck/types/subr/MalReadStr.ck rename to impls/chuck/types/subr/MalReadStr.ck diff --git a/chuck/types/subr/MalReadline.ck b/impls/chuck/types/subr/MalReadline.ck similarity index 100% rename from chuck/types/subr/MalReadline.ck rename to impls/chuck/types/subr/MalReadline.ck diff --git a/chuck/types/subr/MalRest.ck b/impls/chuck/types/subr/MalRest.ck similarity index 100% rename from chuck/types/subr/MalRest.ck rename to impls/chuck/types/subr/MalRest.ck diff --git a/chuck/types/subr/MalSeq.ck b/impls/chuck/types/subr/MalSeq.ck similarity index 100% rename from chuck/types/subr/MalSeq.ck rename to impls/chuck/types/subr/MalSeq.ck diff --git a/chuck/types/subr/MalSequential.ck b/impls/chuck/types/subr/MalSequential.ck similarity index 100% rename from chuck/types/subr/MalSequential.ck rename to impls/chuck/types/subr/MalSequential.ck diff --git a/chuck/types/subr/MalSlurp.ck b/impls/chuck/types/subr/MalSlurp.ck similarity index 100% rename from chuck/types/subr/MalSlurp.ck rename to impls/chuck/types/subr/MalSlurp.ck diff --git a/chuck/types/subr/MalStr.ck b/impls/chuck/types/subr/MalStr.ck similarity index 100% rename from chuck/types/subr/MalStr.ck rename to impls/chuck/types/subr/MalStr.ck diff --git a/chuck/types/subr/MalSub.ck b/impls/chuck/types/subr/MalSub.ck similarity index 100% rename from chuck/types/subr/MalSub.ck rename to impls/chuck/types/subr/MalSub.ck diff --git a/chuck/types/subr/MalSymbolify.ck b/impls/chuck/types/subr/MalSymbolify.ck similarity index 100% rename from chuck/types/subr/MalSymbolify.ck rename to impls/chuck/types/subr/MalSymbolify.ck diff --git a/chuck/types/subr/MalThrow.ck b/impls/chuck/types/subr/MalThrow.ck similarity index 100% rename from chuck/types/subr/MalThrow.ck rename to impls/chuck/types/subr/MalThrow.ck diff --git a/chuck/types/subr/MalTimeMs.ck b/impls/chuck/types/subr/MalTimeMs.ck similarity index 100% rename from chuck/types/subr/MalTimeMs.ck rename to impls/chuck/types/subr/MalTimeMs.ck diff --git a/chuck/types/subr/MalVals.ck b/impls/chuck/types/subr/MalVals.ck similarity index 100% rename from chuck/types/subr/MalVals.ck rename to impls/chuck/types/subr/MalVals.ck diff --git a/chuck/types/subr/MalVectorify.ck b/impls/chuck/types/subr/MalVectorify.ck similarity index 100% rename from chuck/types/subr/MalVectorify.ck rename to impls/chuck/types/subr/MalVectorify.ck diff --git a/chuck/types/subr/MalWithMeta.ck b/impls/chuck/types/subr/MalWithMeta.ck similarity index 100% rename from chuck/types/subr/MalWithMeta.ck rename to impls/chuck/types/subr/MalWithMeta.ck diff --git a/chuck/util/Constants.ck b/impls/chuck/util/Constants.ck similarity index 100% rename from chuck/util/Constants.ck rename to impls/chuck/util/Constants.ck diff --git a/chuck/util/Util.ck b/impls/chuck/util/Util.ck similarity index 100% rename from chuck/util/Util.ck rename to impls/chuck/util/Util.ck diff --git a/clojure/Dockerfile b/impls/clojure/Dockerfile similarity index 100% rename from clojure/Dockerfile rename to impls/clojure/Dockerfile diff --git a/clojure/Makefile b/impls/clojure/Makefile similarity index 100% rename from clojure/Makefile rename to impls/clojure/Makefile diff --git a/clojure/package.json b/impls/clojure/package.json similarity index 100% rename from clojure/package.json rename to impls/clojure/package.json diff --git a/clojure/project.clj b/impls/clojure/project.clj similarity index 100% rename from clojure/project.clj rename to impls/clojure/project.clj diff --git a/clojure/run b/impls/clojure/run similarity index 100% rename from clojure/run rename to impls/clojure/run diff --git a/clojure/src/mal/core.cljc b/impls/clojure/src/mal/core.cljc similarity index 100% rename from clojure/src/mal/core.cljc rename to impls/clojure/src/mal/core.cljc diff --git a/clojure/src/mal/env.cljc b/impls/clojure/src/mal/env.cljc similarity index 100% rename from clojure/src/mal/env.cljc rename to impls/clojure/src/mal/env.cljc diff --git a/clojure/src/mal/node_readline.js b/impls/clojure/src/mal/node_readline.js similarity index 100% rename from clojure/src/mal/node_readline.js rename to impls/clojure/src/mal/node_readline.js diff --git a/clojure/src/mal/printer.cljc b/impls/clojure/src/mal/printer.cljc similarity index 100% rename from clojure/src/mal/printer.cljc rename to impls/clojure/src/mal/printer.cljc diff --git a/clojure/src/mal/reader.cljc b/impls/clojure/src/mal/reader.cljc similarity index 100% rename from clojure/src/mal/reader.cljc rename to impls/clojure/src/mal/reader.cljc diff --git a/clojure/src/mal/readline.clj b/impls/clojure/src/mal/readline.clj similarity index 100% rename from clojure/src/mal/readline.clj rename to impls/clojure/src/mal/readline.clj diff --git a/clojure/src/mal/readline.cljs b/impls/clojure/src/mal/readline.cljs similarity index 100% rename from clojure/src/mal/readline.cljs rename to impls/clojure/src/mal/readline.cljs diff --git a/clojure/src/mal/step0_repl.cljc b/impls/clojure/src/mal/step0_repl.cljc similarity index 100% rename from clojure/src/mal/step0_repl.cljc rename to impls/clojure/src/mal/step0_repl.cljc diff --git a/clojure/src/mal/step1_read_print.cljc b/impls/clojure/src/mal/step1_read_print.cljc similarity index 100% rename from clojure/src/mal/step1_read_print.cljc rename to impls/clojure/src/mal/step1_read_print.cljc diff --git a/clojure/src/mal/step2_eval.cljc b/impls/clojure/src/mal/step2_eval.cljc similarity index 100% rename from clojure/src/mal/step2_eval.cljc rename to impls/clojure/src/mal/step2_eval.cljc diff --git a/clojure/src/mal/step3_env.cljc b/impls/clojure/src/mal/step3_env.cljc similarity index 100% rename from clojure/src/mal/step3_env.cljc rename to impls/clojure/src/mal/step3_env.cljc diff --git a/clojure/src/mal/step4_if_fn_do.cljc b/impls/clojure/src/mal/step4_if_fn_do.cljc similarity index 100% rename from clojure/src/mal/step4_if_fn_do.cljc rename to impls/clojure/src/mal/step4_if_fn_do.cljc diff --git a/clojure/src/mal/step5_tco.cljc b/impls/clojure/src/mal/step5_tco.cljc similarity index 100% rename from clojure/src/mal/step5_tco.cljc rename to impls/clojure/src/mal/step5_tco.cljc diff --git a/clojure/src/mal/step6_file.cljc b/impls/clojure/src/mal/step6_file.cljc similarity index 100% rename from clojure/src/mal/step6_file.cljc rename to impls/clojure/src/mal/step6_file.cljc diff --git a/clojure/src/mal/step7_quote.cljc b/impls/clojure/src/mal/step7_quote.cljc similarity index 100% rename from clojure/src/mal/step7_quote.cljc rename to impls/clojure/src/mal/step7_quote.cljc diff --git a/clojure/src/mal/step8_macros.cljc b/impls/clojure/src/mal/step8_macros.cljc similarity index 100% rename from clojure/src/mal/step8_macros.cljc rename to impls/clojure/src/mal/step8_macros.cljc diff --git a/clojure/src/mal/step9_try.cljc b/impls/clojure/src/mal/step9_try.cljc similarity index 100% rename from clojure/src/mal/step9_try.cljc rename to impls/clojure/src/mal/step9_try.cljc diff --git a/clojure/src/mal/stepA_mal.cljc b/impls/clojure/src/mal/stepA_mal.cljc similarity index 100% rename from clojure/src/mal/stepA_mal.cljc rename to impls/clojure/src/mal/stepA_mal.cljc diff --git a/clojure/tests/step5_tco.mal b/impls/clojure/tests/step5_tco.mal similarity index 100% rename from clojure/tests/step5_tco.mal rename to impls/clojure/tests/step5_tco.mal diff --git a/clojure/tests/stepA_mal.mal b/impls/clojure/tests/stepA_mal.mal similarity index 100% rename from clojure/tests/stepA_mal.mal rename to impls/clojure/tests/stepA_mal.mal diff --git a/coffee/Dockerfile b/impls/coffee/Dockerfile similarity index 100% rename from coffee/Dockerfile rename to impls/coffee/Dockerfile diff --git a/coffee/Makefile b/impls/coffee/Makefile similarity index 100% rename from coffee/Makefile rename to impls/coffee/Makefile diff --git a/coffee/core.coffee b/impls/coffee/core.coffee similarity index 100% rename from coffee/core.coffee rename to impls/coffee/core.coffee diff --git a/coffee/env.coffee b/impls/coffee/env.coffee similarity index 100% rename from coffee/env.coffee rename to impls/coffee/env.coffee diff --git a/coffee/node_readline.coffee b/impls/coffee/node_readline.coffee similarity index 100% rename from coffee/node_readline.coffee rename to impls/coffee/node_readline.coffee diff --git a/coffee/package.json b/impls/coffee/package.json similarity index 100% rename from coffee/package.json rename to impls/coffee/package.json diff --git a/coffee/printer.coffee b/impls/coffee/printer.coffee similarity index 100% rename from coffee/printer.coffee rename to impls/coffee/printer.coffee diff --git a/coffee/reader.coffee b/impls/coffee/reader.coffee similarity index 100% rename from coffee/reader.coffee rename to impls/coffee/reader.coffee diff --git a/coffee/run b/impls/coffee/run similarity index 100% rename from coffee/run rename to impls/coffee/run diff --git a/coffee/step0_repl.coffee b/impls/coffee/step0_repl.coffee similarity index 100% rename from coffee/step0_repl.coffee rename to impls/coffee/step0_repl.coffee diff --git a/coffee/step1_read_print.coffee b/impls/coffee/step1_read_print.coffee similarity index 100% rename from coffee/step1_read_print.coffee rename to impls/coffee/step1_read_print.coffee diff --git a/coffee/step2_eval.coffee b/impls/coffee/step2_eval.coffee similarity index 100% rename from coffee/step2_eval.coffee rename to impls/coffee/step2_eval.coffee diff --git a/coffee/step3_env.coffee b/impls/coffee/step3_env.coffee similarity index 100% rename from coffee/step3_env.coffee rename to impls/coffee/step3_env.coffee diff --git a/coffee/step4_if_fn_do.coffee b/impls/coffee/step4_if_fn_do.coffee similarity index 100% rename from coffee/step4_if_fn_do.coffee rename to impls/coffee/step4_if_fn_do.coffee diff --git a/coffee/step5_tco.coffee b/impls/coffee/step5_tco.coffee similarity index 100% rename from coffee/step5_tco.coffee rename to impls/coffee/step5_tco.coffee diff --git a/coffee/step6_file.coffee b/impls/coffee/step6_file.coffee similarity index 100% rename from coffee/step6_file.coffee rename to impls/coffee/step6_file.coffee diff --git a/coffee/step7_quote.coffee b/impls/coffee/step7_quote.coffee similarity index 100% rename from coffee/step7_quote.coffee rename to impls/coffee/step7_quote.coffee diff --git a/coffee/step8_macros.coffee b/impls/coffee/step8_macros.coffee similarity index 100% rename from coffee/step8_macros.coffee rename to impls/coffee/step8_macros.coffee diff --git a/coffee/step9_try.coffee b/impls/coffee/step9_try.coffee similarity index 100% rename from coffee/step9_try.coffee rename to impls/coffee/step9_try.coffee diff --git a/coffee/stepA_mal.coffee b/impls/coffee/stepA_mal.coffee similarity index 100% rename from coffee/stepA_mal.coffee rename to impls/coffee/stepA_mal.coffee diff --git a/coffee/tests/step5_tco.mal b/impls/coffee/tests/step5_tco.mal similarity index 100% rename from coffee/tests/step5_tco.mal rename to impls/coffee/tests/step5_tco.mal diff --git a/coffee/tests/stepA_mal.mal b/impls/coffee/tests/stepA_mal.mal similarity index 100% rename from coffee/tests/stepA_mal.mal rename to impls/coffee/tests/stepA_mal.mal diff --git a/coffee/types.coffee b/impls/coffee/types.coffee similarity index 100% rename from coffee/types.coffee rename to impls/coffee/types.coffee diff --git a/common-lisp/Dockerfile b/impls/common-lisp/Dockerfile similarity index 100% rename from common-lisp/Dockerfile rename to impls/common-lisp/Dockerfile diff --git a/common-lisp/Makefile b/impls/common-lisp/Makefile similarity index 100% rename from common-lisp/Makefile rename to impls/common-lisp/Makefile diff --git a/common-lisp/README.org b/impls/common-lisp/README.org similarity index 100% rename from common-lisp/README.org rename to impls/common-lisp/README.org diff --git a/common-lisp/fake-readline.lisp b/impls/common-lisp/fake-readline.lisp similarity index 100% rename from common-lisp/fake-readline.lisp rename to impls/common-lisp/fake-readline.lisp diff --git a/common-lisp/hist/.keepdir b/impls/common-lisp/hist/.keepdir similarity index 100% rename from common-lisp/hist/.keepdir rename to impls/common-lisp/hist/.keepdir diff --git a/common-lisp/run b/impls/common-lisp/run similarity index 100% rename from common-lisp/run rename to impls/common-lisp/run diff --git a/common-lisp/run-abcl.lisp b/impls/common-lisp/run-abcl.lisp similarity index 100% rename from common-lisp/run-abcl.lisp rename to impls/common-lisp/run-abcl.lisp diff --git a/common-lisp/run-mkcl.lisp b/impls/common-lisp/run-mkcl.lisp similarity index 100% rename from common-lisp/run-mkcl.lisp rename to impls/common-lisp/run-mkcl.lisp diff --git a/common-lisp/src/core.lisp b/impls/common-lisp/src/core.lisp similarity index 100% rename from common-lisp/src/core.lisp rename to impls/common-lisp/src/core.lisp diff --git a/common-lisp/src/env.lisp b/impls/common-lisp/src/env.lisp similarity index 100% rename from common-lisp/src/env.lisp rename to impls/common-lisp/src/env.lisp diff --git a/common-lisp/src/printer.lisp b/impls/common-lisp/src/printer.lisp similarity index 100% rename from common-lisp/src/printer.lisp rename to impls/common-lisp/src/printer.lisp diff --git a/common-lisp/src/reader.lisp b/impls/common-lisp/src/reader.lisp similarity index 100% rename from common-lisp/src/reader.lisp rename to impls/common-lisp/src/reader.lisp diff --git a/common-lisp/src/step0_repl.lisp b/impls/common-lisp/src/step0_repl.lisp similarity index 100% rename from common-lisp/src/step0_repl.lisp rename to impls/common-lisp/src/step0_repl.lisp diff --git a/common-lisp/src/step1_read_print.lisp b/impls/common-lisp/src/step1_read_print.lisp similarity index 100% rename from common-lisp/src/step1_read_print.lisp rename to impls/common-lisp/src/step1_read_print.lisp diff --git a/common-lisp/src/step2_eval.lisp b/impls/common-lisp/src/step2_eval.lisp similarity index 100% rename from common-lisp/src/step2_eval.lisp rename to impls/common-lisp/src/step2_eval.lisp diff --git a/common-lisp/src/step3_env.lisp b/impls/common-lisp/src/step3_env.lisp similarity index 100% rename from common-lisp/src/step3_env.lisp rename to impls/common-lisp/src/step3_env.lisp diff --git a/common-lisp/src/step4_if_fn_do.lisp b/impls/common-lisp/src/step4_if_fn_do.lisp similarity index 100% rename from common-lisp/src/step4_if_fn_do.lisp rename to impls/common-lisp/src/step4_if_fn_do.lisp diff --git a/common-lisp/src/step5_tco.lisp b/impls/common-lisp/src/step5_tco.lisp similarity index 100% rename from common-lisp/src/step5_tco.lisp rename to impls/common-lisp/src/step5_tco.lisp diff --git a/common-lisp/src/step6_file.lisp b/impls/common-lisp/src/step6_file.lisp similarity index 100% rename from common-lisp/src/step6_file.lisp rename to impls/common-lisp/src/step6_file.lisp diff --git a/common-lisp/src/step7_quote.lisp b/impls/common-lisp/src/step7_quote.lisp similarity index 100% rename from common-lisp/src/step7_quote.lisp rename to impls/common-lisp/src/step7_quote.lisp diff --git a/common-lisp/src/step8_macros.lisp b/impls/common-lisp/src/step8_macros.lisp similarity index 100% rename from common-lisp/src/step8_macros.lisp rename to impls/common-lisp/src/step8_macros.lisp diff --git a/common-lisp/src/step9_try.lisp b/impls/common-lisp/src/step9_try.lisp similarity index 100% rename from common-lisp/src/step9_try.lisp rename to impls/common-lisp/src/step9_try.lisp diff --git a/common-lisp/src/stepA_mal.lisp b/impls/common-lisp/src/stepA_mal.lisp similarity index 100% rename from common-lisp/src/stepA_mal.lisp rename to impls/common-lisp/src/stepA_mal.lisp diff --git a/common-lisp/src/types.lisp b/impls/common-lisp/src/types.lisp similarity index 100% rename from common-lisp/src/types.lisp rename to impls/common-lisp/src/types.lisp diff --git a/common-lisp/src/utils.lisp b/impls/common-lisp/src/utils.lisp similarity index 100% rename from common-lisp/src/utils.lisp rename to impls/common-lisp/src/utils.lisp diff --git a/common-lisp/step0_repl.asd b/impls/common-lisp/step0_repl.asd similarity index 100% rename from common-lisp/step0_repl.asd rename to impls/common-lisp/step0_repl.asd diff --git a/common-lisp/step1_read_print.asd b/impls/common-lisp/step1_read_print.asd similarity index 100% rename from common-lisp/step1_read_print.asd rename to impls/common-lisp/step1_read_print.asd diff --git a/common-lisp/step2_eval.asd b/impls/common-lisp/step2_eval.asd similarity index 100% rename from common-lisp/step2_eval.asd rename to impls/common-lisp/step2_eval.asd diff --git a/common-lisp/step3_env.asd b/impls/common-lisp/step3_env.asd similarity index 100% rename from common-lisp/step3_env.asd rename to impls/common-lisp/step3_env.asd diff --git a/common-lisp/step4_if_fn_do.asd b/impls/common-lisp/step4_if_fn_do.asd similarity index 100% rename from common-lisp/step4_if_fn_do.asd rename to impls/common-lisp/step4_if_fn_do.asd diff --git a/common-lisp/step5_tco.asd b/impls/common-lisp/step5_tco.asd similarity index 100% rename from common-lisp/step5_tco.asd rename to impls/common-lisp/step5_tco.asd diff --git a/common-lisp/step6_file.asd b/impls/common-lisp/step6_file.asd similarity index 100% rename from common-lisp/step6_file.asd rename to impls/common-lisp/step6_file.asd diff --git a/common-lisp/step7_quote.asd b/impls/common-lisp/step7_quote.asd similarity index 100% rename from common-lisp/step7_quote.asd rename to impls/common-lisp/step7_quote.asd diff --git a/common-lisp/step8_macros.asd b/impls/common-lisp/step8_macros.asd similarity index 100% rename from common-lisp/step8_macros.asd rename to impls/common-lisp/step8_macros.asd diff --git a/common-lisp/step9_try.asd b/impls/common-lisp/step9_try.asd similarity index 100% rename from common-lisp/step9_try.asd rename to impls/common-lisp/step9_try.asd diff --git a/common-lisp/stepA_mal.asd b/impls/common-lisp/stepA_mal.asd similarity index 100% rename from common-lisp/stepA_mal.asd rename to impls/common-lisp/stepA_mal.asd diff --git a/common-lisp/tests/stepA_mal.mal b/impls/common-lisp/tests/stepA_mal.mal similarity index 100% rename from common-lisp/tests/stepA_mal.mal rename to impls/common-lisp/tests/stepA_mal.mal diff --git a/cpp/.gitignore b/impls/cpp/.gitignore similarity index 100% rename from cpp/.gitignore rename to impls/cpp/.gitignore diff --git a/cpp/Core.cpp b/impls/cpp/Core.cpp similarity index 100% rename from cpp/Core.cpp rename to impls/cpp/Core.cpp diff --git a/cpp/Debug.h b/impls/cpp/Debug.h similarity index 100% rename from cpp/Debug.h rename to impls/cpp/Debug.h diff --git a/cpp/Dockerfile b/impls/cpp/Dockerfile similarity index 100% rename from cpp/Dockerfile rename to impls/cpp/Dockerfile diff --git a/cpp/Environment.cpp b/impls/cpp/Environment.cpp similarity index 100% rename from cpp/Environment.cpp rename to impls/cpp/Environment.cpp diff --git a/cpp/Environment.h b/impls/cpp/Environment.h similarity index 100% rename from cpp/Environment.h rename to impls/cpp/Environment.h diff --git a/cpp/MAL.h b/impls/cpp/MAL.h similarity index 100% rename from cpp/MAL.h rename to impls/cpp/MAL.h diff --git a/cpp/Makefile b/impls/cpp/Makefile similarity index 100% rename from cpp/Makefile rename to impls/cpp/Makefile diff --git a/cpp/README.md b/impls/cpp/README.md similarity index 100% rename from cpp/README.md rename to impls/cpp/README.md diff --git a/cpp/ReadLine.cpp b/impls/cpp/ReadLine.cpp similarity index 100% rename from cpp/ReadLine.cpp rename to impls/cpp/ReadLine.cpp diff --git a/cpp/ReadLine.h b/impls/cpp/ReadLine.h similarity index 100% rename from cpp/ReadLine.h rename to impls/cpp/ReadLine.h diff --git a/cpp/Reader.cpp b/impls/cpp/Reader.cpp similarity index 100% rename from cpp/Reader.cpp rename to impls/cpp/Reader.cpp diff --git a/cpp/RefCountedPtr.h b/impls/cpp/RefCountedPtr.h similarity index 100% rename from cpp/RefCountedPtr.h rename to impls/cpp/RefCountedPtr.h diff --git a/cpp/StaticList.h b/impls/cpp/StaticList.h similarity index 100% rename from cpp/StaticList.h rename to impls/cpp/StaticList.h diff --git a/cpp/String.cpp b/impls/cpp/String.cpp similarity index 100% rename from cpp/String.cpp rename to impls/cpp/String.cpp diff --git a/cpp/String.h b/impls/cpp/String.h similarity index 100% rename from cpp/String.h rename to impls/cpp/String.h diff --git a/cpp/Types.cpp b/impls/cpp/Types.cpp similarity index 100% rename from cpp/Types.cpp rename to impls/cpp/Types.cpp diff --git a/cpp/Types.h b/impls/cpp/Types.h similarity index 100% rename from cpp/Types.h rename to impls/cpp/Types.h diff --git a/cpp/Validation.cpp b/impls/cpp/Validation.cpp similarity index 100% rename from cpp/Validation.cpp rename to impls/cpp/Validation.cpp diff --git a/cpp/Validation.h b/impls/cpp/Validation.h similarity index 100% rename from cpp/Validation.h rename to impls/cpp/Validation.h diff --git a/cpp/docker.sh b/impls/cpp/docker.sh similarity index 100% rename from cpp/docker.sh rename to impls/cpp/docker.sh diff --git a/cpp/run b/impls/cpp/run similarity index 100% rename from cpp/run rename to impls/cpp/run diff --git a/cpp/step0_repl.cpp b/impls/cpp/step0_repl.cpp similarity index 100% rename from cpp/step0_repl.cpp rename to impls/cpp/step0_repl.cpp diff --git a/cpp/step1_read_print.cpp b/impls/cpp/step1_read_print.cpp similarity index 100% rename from cpp/step1_read_print.cpp rename to impls/cpp/step1_read_print.cpp diff --git a/cpp/step2_eval.cpp b/impls/cpp/step2_eval.cpp similarity index 100% rename from cpp/step2_eval.cpp rename to impls/cpp/step2_eval.cpp diff --git a/cpp/step3_env.cpp b/impls/cpp/step3_env.cpp similarity index 100% rename from cpp/step3_env.cpp rename to impls/cpp/step3_env.cpp diff --git a/cpp/step4_if_fn_do.cpp b/impls/cpp/step4_if_fn_do.cpp similarity index 100% rename from cpp/step4_if_fn_do.cpp rename to impls/cpp/step4_if_fn_do.cpp diff --git a/cpp/step5_tco.cpp b/impls/cpp/step5_tco.cpp similarity index 100% rename from cpp/step5_tco.cpp rename to impls/cpp/step5_tco.cpp diff --git a/cpp/step6_file.cpp b/impls/cpp/step6_file.cpp similarity index 100% rename from cpp/step6_file.cpp rename to impls/cpp/step6_file.cpp diff --git a/cpp/step7_quote.cpp b/impls/cpp/step7_quote.cpp similarity index 100% rename from cpp/step7_quote.cpp rename to impls/cpp/step7_quote.cpp diff --git a/cpp/step8_macros.cpp b/impls/cpp/step8_macros.cpp similarity index 100% rename from cpp/step8_macros.cpp rename to impls/cpp/step8_macros.cpp diff --git a/cpp/step9_try.cpp b/impls/cpp/step9_try.cpp similarity index 100% rename from cpp/step9_try.cpp rename to impls/cpp/step9_try.cpp diff --git a/cpp/stepA_mal.cpp b/impls/cpp/stepA_mal.cpp similarity index 100% rename from cpp/stepA_mal.cpp rename to impls/cpp/stepA_mal.cpp diff --git a/cpp/tests/step5_tco.mal b/impls/cpp/tests/step5_tco.mal similarity index 100% rename from cpp/tests/step5_tco.mal rename to impls/cpp/tests/step5_tco.mal diff --git a/crystal/Dockerfile b/impls/crystal/Dockerfile similarity index 100% rename from crystal/Dockerfile rename to impls/crystal/Dockerfile diff --git a/crystal/Makefile b/impls/crystal/Makefile similarity index 100% rename from crystal/Makefile rename to impls/crystal/Makefile diff --git a/crystal/core.cr b/impls/crystal/core.cr similarity index 100% rename from crystal/core.cr rename to impls/crystal/core.cr diff --git a/crystal/env.cr b/impls/crystal/env.cr similarity index 100% rename from crystal/env.cr rename to impls/crystal/env.cr diff --git a/crystal/error.cr b/impls/crystal/error.cr similarity index 100% rename from crystal/error.cr rename to impls/crystal/error.cr diff --git a/crystal/printer.cr b/impls/crystal/printer.cr similarity index 100% rename from crystal/printer.cr rename to impls/crystal/printer.cr diff --git a/crystal/reader.cr b/impls/crystal/reader.cr similarity index 100% rename from crystal/reader.cr rename to impls/crystal/reader.cr diff --git a/crystal/run b/impls/crystal/run similarity index 100% rename from crystal/run rename to impls/crystal/run diff --git a/crystal/step0_repl.cr b/impls/crystal/step0_repl.cr similarity index 100% rename from crystal/step0_repl.cr rename to impls/crystal/step0_repl.cr diff --git a/crystal/step1_read_print.cr b/impls/crystal/step1_read_print.cr similarity index 100% rename from crystal/step1_read_print.cr rename to impls/crystal/step1_read_print.cr diff --git a/crystal/step2_eval.cr b/impls/crystal/step2_eval.cr similarity index 100% rename from crystal/step2_eval.cr rename to impls/crystal/step2_eval.cr diff --git a/crystal/step3_env.cr b/impls/crystal/step3_env.cr similarity index 100% rename from crystal/step3_env.cr rename to impls/crystal/step3_env.cr diff --git a/crystal/step4_if_fn_do.cr b/impls/crystal/step4_if_fn_do.cr similarity index 100% rename from crystal/step4_if_fn_do.cr rename to impls/crystal/step4_if_fn_do.cr diff --git a/crystal/step5_tco.cr b/impls/crystal/step5_tco.cr similarity index 100% rename from crystal/step5_tco.cr rename to impls/crystal/step5_tco.cr diff --git a/crystal/step6_file.cr b/impls/crystal/step6_file.cr similarity index 100% rename from crystal/step6_file.cr rename to impls/crystal/step6_file.cr diff --git a/crystal/step7_quote.cr b/impls/crystal/step7_quote.cr similarity index 100% rename from crystal/step7_quote.cr rename to impls/crystal/step7_quote.cr diff --git a/crystal/step8_macros.cr b/impls/crystal/step8_macros.cr similarity index 100% rename from crystal/step8_macros.cr rename to impls/crystal/step8_macros.cr diff --git a/crystal/step9_try.cr b/impls/crystal/step9_try.cr similarity index 100% rename from crystal/step9_try.cr rename to impls/crystal/step9_try.cr diff --git a/crystal/stepA_mal.cr b/impls/crystal/stepA_mal.cr similarity index 100% rename from crystal/stepA_mal.cr rename to impls/crystal/stepA_mal.cr diff --git a/crystal/tests/step5_tco.mal b/impls/crystal/tests/step5_tco.mal similarity index 100% rename from crystal/tests/step5_tco.mal rename to impls/crystal/tests/step5_tco.mal diff --git a/crystal/types.cr b/impls/crystal/types.cr similarity index 100% rename from crystal/types.cr rename to impls/crystal/types.cr diff --git a/cs/Dockerfile b/impls/cs/Dockerfile similarity index 100% rename from cs/Dockerfile rename to impls/cs/Dockerfile diff --git a/cs/Makefile b/impls/cs/Makefile similarity index 100% rename from cs/Makefile rename to impls/cs/Makefile diff --git a/cs/core.cs b/impls/cs/core.cs similarity index 100% rename from cs/core.cs rename to impls/cs/core.cs diff --git a/cs/env.cs b/impls/cs/env.cs similarity index 100% rename from cs/env.cs rename to impls/cs/env.cs diff --git a/cs/getline.cs b/impls/cs/getline.cs similarity index 100% rename from cs/getline.cs rename to impls/cs/getline.cs diff --git a/cs/interop.cs b/impls/cs/interop.cs similarity index 100% rename from cs/interop.cs rename to impls/cs/interop.cs diff --git a/cs/printer.cs b/impls/cs/printer.cs similarity index 100% rename from cs/printer.cs rename to impls/cs/printer.cs diff --git a/cs/reader.cs b/impls/cs/reader.cs similarity index 100% rename from cs/reader.cs rename to impls/cs/reader.cs diff --git a/cs/readline.cs b/impls/cs/readline.cs similarity index 100% rename from cs/readline.cs rename to impls/cs/readline.cs diff --git a/cs/run b/impls/cs/run similarity index 100% rename from cs/run rename to impls/cs/run diff --git a/cs/step0_repl.cs b/impls/cs/step0_repl.cs similarity index 100% rename from cs/step0_repl.cs rename to impls/cs/step0_repl.cs diff --git a/cs/step1_read_print.cs b/impls/cs/step1_read_print.cs similarity index 100% rename from cs/step1_read_print.cs rename to impls/cs/step1_read_print.cs diff --git a/cs/step2_eval.cs b/impls/cs/step2_eval.cs similarity index 100% rename from cs/step2_eval.cs rename to impls/cs/step2_eval.cs diff --git a/cs/step3_env.cs b/impls/cs/step3_env.cs similarity index 100% rename from cs/step3_env.cs rename to impls/cs/step3_env.cs diff --git a/cs/step4_if_fn_do.cs b/impls/cs/step4_if_fn_do.cs similarity index 100% rename from cs/step4_if_fn_do.cs rename to impls/cs/step4_if_fn_do.cs diff --git a/cs/step5_tco.cs b/impls/cs/step5_tco.cs similarity index 100% rename from cs/step5_tco.cs rename to impls/cs/step5_tco.cs diff --git a/cs/step6_file.cs b/impls/cs/step6_file.cs similarity index 100% rename from cs/step6_file.cs rename to impls/cs/step6_file.cs diff --git a/cs/step7_quote.cs b/impls/cs/step7_quote.cs similarity index 100% rename from cs/step7_quote.cs rename to impls/cs/step7_quote.cs diff --git a/cs/step8_macros.cs b/impls/cs/step8_macros.cs similarity index 100% rename from cs/step8_macros.cs rename to impls/cs/step8_macros.cs diff --git a/cs/step9_try.cs b/impls/cs/step9_try.cs similarity index 100% rename from cs/step9_try.cs rename to impls/cs/step9_try.cs diff --git a/cs/stepA_mal.cs b/impls/cs/stepA_mal.cs similarity index 100% rename from cs/stepA_mal.cs rename to impls/cs/stepA_mal.cs diff --git a/cs/tests/step5_tco.mal b/impls/cs/tests/step5_tco.mal similarity index 100% rename from cs/tests/step5_tco.mal rename to impls/cs/tests/step5_tco.mal diff --git a/cs/types.cs b/impls/cs/types.cs similarity index 100% rename from cs/types.cs rename to impls/cs/types.cs diff --git a/d/Dockerfile b/impls/d/Dockerfile similarity index 100% rename from d/Dockerfile rename to impls/d/Dockerfile diff --git a/d/Makefile b/impls/d/Makefile similarity index 100% rename from d/Makefile rename to impls/d/Makefile diff --git a/d/env.d b/impls/d/env.d similarity index 100% rename from d/env.d rename to impls/d/env.d diff --git a/d/main.di b/impls/d/main.di similarity index 100% rename from d/main.di rename to impls/d/main.di diff --git a/d/mal_core.d b/impls/d/mal_core.d similarity index 100% rename from d/mal_core.d rename to impls/d/mal_core.d diff --git a/d/printer.d b/impls/d/printer.d similarity index 100% rename from d/printer.d rename to impls/d/printer.d diff --git a/d/reader.d b/impls/d/reader.d similarity index 100% rename from d/reader.d rename to impls/d/reader.d diff --git a/d/readline.d b/impls/d/readline.d similarity index 100% rename from d/readline.d rename to impls/d/readline.d diff --git a/d/run b/impls/d/run similarity index 100% rename from d/run rename to impls/d/run diff --git a/d/step0_repl.d b/impls/d/step0_repl.d similarity index 100% rename from d/step0_repl.d rename to impls/d/step0_repl.d diff --git a/d/step1_read_print.d b/impls/d/step1_read_print.d similarity index 100% rename from d/step1_read_print.d rename to impls/d/step1_read_print.d diff --git a/d/step2_eval.d b/impls/d/step2_eval.d similarity index 100% rename from d/step2_eval.d rename to impls/d/step2_eval.d diff --git a/d/step3_env.d b/impls/d/step3_env.d similarity index 100% rename from d/step3_env.d rename to impls/d/step3_env.d diff --git a/d/step4_if_fn_do.d b/impls/d/step4_if_fn_do.d similarity index 100% rename from d/step4_if_fn_do.d rename to impls/d/step4_if_fn_do.d diff --git a/d/step5_tco.d b/impls/d/step5_tco.d similarity index 100% rename from d/step5_tco.d rename to impls/d/step5_tco.d diff --git a/d/step6_file.d b/impls/d/step6_file.d similarity index 100% rename from d/step6_file.d rename to impls/d/step6_file.d diff --git a/d/step7_quote.d b/impls/d/step7_quote.d similarity index 100% rename from d/step7_quote.d rename to impls/d/step7_quote.d diff --git a/d/step8_macros.d b/impls/d/step8_macros.d similarity index 100% rename from d/step8_macros.d rename to impls/d/step8_macros.d diff --git a/d/step9_try.d b/impls/d/step9_try.d similarity index 100% rename from d/step9_try.d rename to impls/d/step9_try.d diff --git a/d/stepA_mal.d b/impls/d/stepA_mal.d similarity index 100% rename from d/stepA_mal.d rename to impls/d/stepA_mal.d diff --git a/d/tests/step5_tco.mal b/impls/d/tests/step5_tco.mal similarity index 100% rename from d/tests/step5_tco.mal rename to impls/d/tests/step5_tco.mal diff --git a/d/types.d b/impls/d/types.d similarity index 100% rename from d/types.d rename to impls/d/types.d diff --git a/dart/.analysis_options b/impls/dart/.analysis_options similarity index 100% rename from dart/.analysis_options rename to impls/dart/.analysis_options diff --git a/dart/.packages b/impls/dart/.packages similarity index 100% rename from dart/.packages rename to impls/dart/.packages diff --git a/dart/Dockerfile b/impls/dart/Dockerfile similarity index 100% rename from dart/Dockerfile rename to impls/dart/Dockerfile diff --git a/dart/Makefile b/impls/dart/Makefile similarity index 100% rename from dart/Makefile rename to impls/dart/Makefile diff --git a/dart/core.dart b/impls/dart/core.dart similarity index 100% rename from dart/core.dart rename to impls/dart/core.dart diff --git a/dart/env.dart b/impls/dart/env.dart similarity index 100% rename from dart/env.dart rename to impls/dart/env.dart diff --git a/dart/printer.dart b/impls/dart/printer.dart similarity index 100% rename from dart/printer.dart rename to impls/dart/printer.dart diff --git a/dart/pubspec.lock b/impls/dart/pubspec.lock similarity index 100% rename from dart/pubspec.lock rename to impls/dart/pubspec.lock diff --git a/dart/pubspec.yaml b/impls/dart/pubspec.yaml similarity index 100% rename from dart/pubspec.yaml rename to impls/dart/pubspec.yaml diff --git a/dart/reader.dart b/impls/dart/reader.dart similarity index 100% rename from dart/reader.dart rename to impls/dart/reader.dart diff --git a/dart/run b/impls/dart/run similarity index 100% rename from dart/run rename to impls/dart/run diff --git a/dart/step0_repl.dart b/impls/dart/step0_repl.dart similarity index 100% rename from dart/step0_repl.dart rename to impls/dart/step0_repl.dart diff --git a/dart/step1_read_print.dart b/impls/dart/step1_read_print.dart similarity index 100% rename from dart/step1_read_print.dart rename to impls/dart/step1_read_print.dart diff --git a/dart/step2_eval.dart b/impls/dart/step2_eval.dart similarity index 100% rename from dart/step2_eval.dart rename to impls/dart/step2_eval.dart diff --git a/dart/step3_env.dart b/impls/dart/step3_env.dart similarity index 100% rename from dart/step3_env.dart rename to impls/dart/step3_env.dart diff --git a/dart/step4_if_fn_do.dart b/impls/dart/step4_if_fn_do.dart similarity index 100% rename from dart/step4_if_fn_do.dart rename to impls/dart/step4_if_fn_do.dart diff --git a/dart/step5_tco.dart b/impls/dart/step5_tco.dart similarity index 100% rename from dart/step5_tco.dart rename to impls/dart/step5_tco.dart diff --git a/dart/step6_file.dart b/impls/dart/step6_file.dart similarity index 100% rename from dart/step6_file.dart rename to impls/dart/step6_file.dart diff --git a/dart/step7_quote.dart b/impls/dart/step7_quote.dart similarity index 100% rename from dart/step7_quote.dart rename to impls/dart/step7_quote.dart diff --git a/dart/step8_macros.dart b/impls/dart/step8_macros.dart similarity index 100% rename from dart/step8_macros.dart rename to impls/dart/step8_macros.dart diff --git a/dart/step9_try.dart b/impls/dart/step9_try.dart similarity index 100% rename from dart/step9_try.dart rename to impls/dart/step9_try.dart diff --git a/dart/stepA_mal.dart b/impls/dart/stepA_mal.dart similarity index 100% rename from dart/stepA_mal.dart rename to impls/dart/stepA_mal.dart diff --git a/dart/types.dart b/impls/dart/types.dart similarity index 100% rename from dart/types.dart rename to impls/dart/types.dart diff --git a/elisp/Dockerfile b/impls/elisp/Dockerfile similarity index 100% rename from elisp/Dockerfile rename to impls/elisp/Dockerfile diff --git a/elisp/Makefile b/impls/elisp/Makefile similarity index 100% rename from elisp/Makefile rename to impls/elisp/Makefile diff --git a/elisp/mal/core.el b/impls/elisp/mal/core.el similarity index 100% rename from elisp/mal/core.el rename to impls/elisp/mal/core.el diff --git a/elisp/mal/env.el b/impls/elisp/mal/env.el similarity index 100% rename from elisp/mal/env.el rename to impls/elisp/mal/env.el diff --git a/elisp/mal/func.el b/impls/elisp/mal/func.el similarity index 100% rename from elisp/mal/func.el rename to impls/elisp/mal/func.el diff --git a/elisp/mal/printer.el b/impls/elisp/mal/printer.el similarity index 100% rename from elisp/mal/printer.el rename to impls/elisp/mal/printer.el diff --git a/elisp/mal/reader.el b/impls/elisp/mal/reader.el similarity index 100% rename from elisp/mal/reader.el rename to impls/elisp/mal/reader.el diff --git a/elisp/mal/types.el b/impls/elisp/mal/types.el similarity index 100% rename from elisp/mal/types.el rename to impls/elisp/mal/types.el diff --git a/elisp/run b/impls/elisp/run similarity index 100% rename from elisp/run rename to impls/elisp/run diff --git a/elisp/step0_repl.el b/impls/elisp/step0_repl.el similarity index 100% rename from elisp/step0_repl.el rename to impls/elisp/step0_repl.el diff --git a/elisp/step1_read_print.el b/impls/elisp/step1_read_print.el similarity index 100% rename from elisp/step1_read_print.el rename to impls/elisp/step1_read_print.el diff --git a/elisp/step2_eval.el b/impls/elisp/step2_eval.el similarity index 100% rename from elisp/step2_eval.el rename to impls/elisp/step2_eval.el diff --git a/elisp/step3_env.el b/impls/elisp/step3_env.el similarity index 100% rename from elisp/step3_env.el rename to impls/elisp/step3_env.el diff --git a/elisp/step4_if_fn_do.el b/impls/elisp/step4_if_fn_do.el similarity index 100% rename from elisp/step4_if_fn_do.el rename to impls/elisp/step4_if_fn_do.el diff --git a/elisp/step5_tco.el b/impls/elisp/step5_tco.el similarity index 100% rename from elisp/step5_tco.el rename to impls/elisp/step5_tco.el diff --git a/elisp/step6_file.el b/impls/elisp/step6_file.el similarity index 100% rename from elisp/step6_file.el rename to impls/elisp/step6_file.el diff --git a/elisp/step7_quote.el b/impls/elisp/step7_quote.el similarity index 100% rename from elisp/step7_quote.el rename to impls/elisp/step7_quote.el diff --git a/elisp/step8_macros.el b/impls/elisp/step8_macros.el similarity index 100% rename from elisp/step8_macros.el rename to impls/elisp/step8_macros.el diff --git a/elisp/step9_try.el b/impls/elisp/step9_try.el similarity index 100% rename from elisp/step9_try.el rename to impls/elisp/step9_try.el diff --git a/elisp/stepA_mal.el b/impls/elisp/stepA_mal.el similarity index 100% rename from elisp/stepA_mal.el rename to impls/elisp/stepA_mal.el diff --git a/elisp/tests/step5_tco.mal b/impls/elisp/tests/step5_tco.mal similarity index 100% rename from elisp/tests/step5_tco.mal rename to impls/elisp/tests/step5_tco.mal diff --git a/elisp/tests/stepA_mal.mal b/impls/elisp/tests/stepA_mal.mal similarity index 100% rename from elisp/tests/stepA_mal.mal rename to impls/elisp/tests/stepA_mal.mal diff --git a/elixir/Dockerfile b/impls/elixir/Dockerfile similarity index 100% rename from elixir/Dockerfile rename to impls/elixir/Dockerfile diff --git a/elixir/Makefile b/impls/elixir/Makefile similarity index 100% rename from elixir/Makefile rename to impls/elixir/Makefile diff --git a/elixir/lib/mal.ex b/impls/elixir/lib/mal.ex similarity index 100% rename from elixir/lib/mal.ex rename to impls/elixir/lib/mal.ex diff --git a/elixir/lib/mal/atom.ex b/impls/elixir/lib/mal/atom.ex similarity index 100% rename from elixir/lib/mal/atom.ex rename to impls/elixir/lib/mal/atom.ex diff --git a/elixir/lib/mal/core.ex b/impls/elixir/lib/mal/core.ex similarity index 100% rename from elixir/lib/mal/core.ex rename to impls/elixir/lib/mal/core.ex diff --git a/elixir/lib/mal/env.ex b/impls/elixir/lib/mal/env.ex similarity index 100% rename from elixir/lib/mal/env.ex rename to impls/elixir/lib/mal/env.ex diff --git a/elixir/lib/mal/printer.ex b/impls/elixir/lib/mal/printer.ex similarity index 100% rename from elixir/lib/mal/printer.ex rename to impls/elixir/lib/mal/printer.ex diff --git a/elixir/lib/mal/reader.ex b/impls/elixir/lib/mal/reader.ex similarity index 100% rename from elixir/lib/mal/reader.ex rename to impls/elixir/lib/mal/reader.ex diff --git a/elixir/lib/mal/types.ex b/impls/elixir/lib/mal/types.ex similarity index 100% rename from elixir/lib/mal/types.ex rename to impls/elixir/lib/mal/types.ex diff --git a/elixir/lib/mix/tasks/step0_repl.ex b/impls/elixir/lib/mix/tasks/step0_repl.ex similarity index 100% rename from elixir/lib/mix/tasks/step0_repl.ex rename to impls/elixir/lib/mix/tasks/step0_repl.ex diff --git a/elixir/lib/mix/tasks/step1_read_print.ex b/impls/elixir/lib/mix/tasks/step1_read_print.ex similarity index 100% rename from elixir/lib/mix/tasks/step1_read_print.ex rename to impls/elixir/lib/mix/tasks/step1_read_print.ex diff --git a/elixir/lib/mix/tasks/step2_eval.ex b/impls/elixir/lib/mix/tasks/step2_eval.ex similarity index 100% rename from elixir/lib/mix/tasks/step2_eval.ex rename to impls/elixir/lib/mix/tasks/step2_eval.ex diff --git a/elixir/lib/mix/tasks/step3_env.ex b/impls/elixir/lib/mix/tasks/step3_env.ex similarity index 100% rename from elixir/lib/mix/tasks/step3_env.ex rename to impls/elixir/lib/mix/tasks/step3_env.ex diff --git a/elixir/lib/mix/tasks/step4_if_fn_do.ex b/impls/elixir/lib/mix/tasks/step4_if_fn_do.ex similarity index 100% rename from elixir/lib/mix/tasks/step4_if_fn_do.ex rename to impls/elixir/lib/mix/tasks/step4_if_fn_do.ex diff --git a/elixir/lib/mix/tasks/step5_tco.ex b/impls/elixir/lib/mix/tasks/step5_tco.ex similarity index 100% rename from elixir/lib/mix/tasks/step5_tco.ex rename to impls/elixir/lib/mix/tasks/step5_tco.ex diff --git a/elixir/lib/mix/tasks/step6_file.ex b/impls/elixir/lib/mix/tasks/step6_file.ex similarity index 100% rename from elixir/lib/mix/tasks/step6_file.ex rename to impls/elixir/lib/mix/tasks/step6_file.ex diff --git a/elixir/lib/mix/tasks/step7_quote.ex b/impls/elixir/lib/mix/tasks/step7_quote.ex similarity index 100% rename from elixir/lib/mix/tasks/step7_quote.ex rename to impls/elixir/lib/mix/tasks/step7_quote.ex diff --git a/elixir/lib/mix/tasks/step8_macros.ex b/impls/elixir/lib/mix/tasks/step8_macros.ex similarity index 100% rename from elixir/lib/mix/tasks/step8_macros.ex rename to impls/elixir/lib/mix/tasks/step8_macros.ex diff --git a/elixir/lib/mix/tasks/step9_try.ex b/impls/elixir/lib/mix/tasks/step9_try.ex similarity index 100% rename from elixir/lib/mix/tasks/step9_try.ex rename to impls/elixir/lib/mix/tasks/step9_try.ex diff --git a/elixir/lib/mix/tasks/stepA_mal.ex b/impls/elixir/lib/mix/tasks/stepA_mal.ex similarity index 100% rename from elixir/lib/mix/tasks/stepA_mal.ex rename to impls/elixir/lib/mix/tasks/stepA_mal.ex diff --git a/elixir/mix.exs b/impls/elixir/mix.exs similarity index 100% rename from elixir/mix.exs rename to impls/elixir/mix.exs diff --git a/elixir/run b/impls/elixir/run similarity index 100% rename from elixir/run rename to impls/elixir/run diff --git a/elixir/tests/step5_tco.mal b/impls/elixir/tests/step5_tco.mal similarity index 100% rename from elixir/tests/step5_tco.mal rename to impls/elixir/tests/step5_tco.mal diff --git a/elm/.dockerignore b/impls/elm/.dockerignore similarity index 100% rename from elm/.dockerignore rename to impls/elm/.dockerignore diff --git a/elm/Core.elm b/impls/elm/Core.elm similarity index 100% rename from elm/Core.elm rename to impls/elm/Core.elm diff --git a/elm/Dockerfile b/impls/elm/Dockerfile similarity index 100% rename from elm/Dockerfile rename to impls/elm/Dockerfile diff --git a/elm/Env.elm b/impls/elm/Env.elm similarity index 100% rename from elm/Env.elm rename to impls/elm/Env.elm diff --git a/elm/Eval.elm b/impls/elm/Eval.elm similarity index 100% rename from elm/Eval.elm rename to impls/elm/Eval.elm diff --git a/elm/IO.elm b/impls/elm/IO.elm similarity index 100% rename from elm/IO.elm rename to impls/elm/IO.elm diff --git a/elm/Makefile b/impls/elm/Makefile similarity index 100% rename from elm/Makefile rename to impls/elm/Makefile diff --git a/elm/Printer.elm b/impls/elm/Printer.elm similarity index 100% rename from elm/Printer.elm rename to impls/elm/Printer.elm diff --git a/elm/Reader.elm b/impls/elm/Reader.elm similarity index 100% rename from elm/Reader.elm rename to impls/elm/Reader.elm diff --git a/elm/Types.elm b/impls/elm/Types.elm similarity index 100% rename from elm/Types.elm rename to impls/elm/Types.elm diff --git a/elm/Utils.elm b/impls/elm/Utils.elm similarity index 100% rename from elm/Utils.elm rename to impls/elm/Utils.elm diff --git a/elm/bootstrap.js b/impls/elm/bootstrap.js similarity index 100% rename from elm/bootstrap.js rename to impls/elm/bootstrap.js diff --git a/elm/elm-package.json b/impls/elm/elm-package.json similarity index 100% rename from elm/elm-package.json rename to impls/elm/elm-package.json diff --git a/elm/node_readline.js b/impls/elm/node_readline.js similarity index 100% rename from elm/node_readline.js rename to impls/elm/node_readline.js diff --git a/elm/package.json b/impls/elm/package.json similarity index 100% rename from elm/package.json rename to impls/elm/package.json diff --git a/elm/run b/impls/elm/run similarity index 100% rename from elm/run rename to impls/elm/run diff --git a/elm/step0_repl.elm b/impls/elm/step0_repl.elm similarity index 100% rename from elm/step0_repl.elm rename to impls/elm/step0_repl.elm diff --git a/elm/step1_read_print.elm b/impls/elm/step1_read_print.elm similarity index 100% rename from elm/step1_read_print.elm rename to impls/elm/step1_read_print.elm diff --git a/elm/step2_eval.elm b/impls/elm/step2_eval.elm similarity index 100% rename from elm/step2_eval.elm rename to impls/elm/step2_eval.elm diff --git a/elm/step3_env.elm b/impls/elm/step3_env.elm similarity index 100% rename from elm/step3_env.elm rename to impls/elm/step3_env.elm diff --git a/elm/step4_if_fn_do.elm b/impls/elm/step4_if_fn_do.elm similarity index 100% rename from elm/step4_if_fn_do.elm rename to impls/elm/step4_if_fn_do.elm diff --git a/elm/step5_tco.elm b/impls/elm/step5_tco.elm similarity index 100% rename from elm/step5_tco.elm rename to impls/elm/step5_tco.elm diff --git a/elm/step6_file.elm b/impls/elm/step6_file.elm similarity index 100% rename from elm/step6_file.elm rename to impls/elm/step6_file.elm diff --git a/elm/step7_quote.elm b/impls/elm/step7_quote.elm similarity index 100% rename from elm/step7_quote.elm rename to impls/elm/step7_quote.elm diff --git a/elm/step8_macros.elm b/impls/elm/step8_macros.elm similarity index 100% rename from elm/step8_macros.elm rename to impls/elm/step8_macros.elm diff --git a/elm/step9_try.elm b/impls/elm/step9_try.elm similarity index 100% rename from elm/step9_try.elm rename to impls/elm/step9_try.elm diff --git a/elm/stepA_mal.elm b/impls/elm/stepA_mal.elm similarity index 100% rename from elm/stepA_mal.elm rename to impls/elm/stepA_mal.elm diff --git a/erlang/Dockerfile b/impls/erlang/Dockerfile similarity index 100% rename from erlang/Dockerfile rename to impls/erlang/Dockerfile diff --git a/erlang/Makefile b/impls/erlang/Makefile similarity index 100% rename from erlang/Makefile rename to impls/erlang/Makefile diff --git a/erlang/rebar.config b/impls/erlang/rebar.config similarity index 100% rename from erlang/rebar.config rename to impls/erlang/rebar.config diff --git a/erlang/rebar.config.script b/impls/erlang/rebar.config.script similarity index 100% rename from erlang/rebar.config.script rename to impls/erlang/rebar.config.script diff --git a/erlang/run b/impls/erlang/run similarity index 100% rename from erlang/run rename to impls/erlang/run diff --git a/erlang/src/atom.erl b/impls/erlang/src/atom.erl similarity index 100% rename from erlang/src/atom.erl rename to impls/erlang/src/atom.erl diff --git a/erlang/src/core.erl b/impls/erlang/src/core.erl similarity index 100% rename from erlang/src/core.erl rename to impls/erlang/src/core.erl diff --git a/erlang/src/env.erl b/impls/erlang/src/env.erl similarity index 100% rename from erlang/src/env.erl rename to impls/erlang/src/env.erl diff --git a/erlang/src/mal.app.src b/impls/erlang/src/mal.app.src similarity index 100% rename from erlang/src/mal.app.src rename to impls/erlang/src/mal.app.src diff --git a/erlang/src/printer.erl b/impls/erlang/src/printer.erl similarity index 100% rename from erlang/src/printer.erl rename to impls/erlang/src/printer.erl diff --git a/erlang/src/reader.erl b/impls/erlang/src/reader.erl similarity index 100% rename from erlang/src/reader.erl rename to impls/erlang/src/reader.erl diff --git a/erlang/src/step0_repl.erl b/impls/erlang/src/step0_repl.erl similarity index 100% rename from erlang/src/step0_repl.erl rename to impls/erlang/src/step0_repl.erl diff --git a/erlang/src/step1_read_print.erl b/impls/erlang/src/step1_read_print.erl similarity index 100% rename from erlang/src/step1_read_print.erl rename to impls/erlang/src/step1_read_print.erl diff --git a/erlang/src/step2_eval.erl b/impls/erlang/src/step2_eval.erl similarity index 100% rename from erlang/src/step2_eval.erl rename to impls/erlang/src/step2_eval.erl diff --git a/erlang/src/step3_env.erl b/impls/erlang/src/step3_env.erl similarity index 100% rename from erlang/src/step3_env.erl rename to impls/erlang/src/step3_env.erl diff --git a/erlang/src/step4_if_fn_do.erl b/impls/erlang/src/step4_if_fn_do.erl similarity index 100% rename from erlang/src/step4_if_fn_do.erl rename to impls/erlang/src/step4_if_fn_do.erl diff --git a/erlang/src/step5_tco.erl b/impls/erlang/src/step5_tco.erl similarity index 100% rename from erlang/src/step5_tco.erl rename to impls/erlang/src/step5_tco.erl diff --git a/erlang/src/step6_file.erl b/impls/erlang/src/step6_file.erl similarity index 100% rename from erlang/src/step6_file.erl rename to impls/erlang/src/step6_file.erl diff --git a/erlang/src/step7_quote.erl b/impls/erlang/src/step7_quote.erl similarity index 100% rename from erlang/src/step7_quote.erl rename to impls/erlang/src/step7_quote.erl diff --git a/erlang/src/step8_macros.erl b/impls/erlang/src/step8_macros.erl similarity index 100% rename from erlang/src/step8_macros.erl rename to impls/erlang/src/step8_macros.erl diff --git a/erlang/src/step9_try.erl b/impls/erlang/src/step9_try.erl similarity index 100% rename from erlang/src/step9_try.erl rename to impls/erlang/src/step9_try.erl diff --git a/erlang/src/stepA_mal.erl b/impls/erlang/src/stepA_mal.erl similarity index 100% rename from erlang/src/stepA_mal.erl rename to impls/erlang/src/stepA_mal.erl diff --git a/erlang/src/types.erl b/impls/erlang/src/types.erl similarity index 100% rename from erlang/src/types.erl rename to impls/erlang/src/types.erl diff --git a/erlang/tests/step5_tco.mal b/impls/erlang/tests/step5_tco.mal similarity index 100% rename from erlang/tests/step5_tco.mal rename to impls/erlang/tests/step5_tco.mal diff --git a/es6/Dockerfile b/impls/es6/Dockerfile similarity index 100% rename from es6/Dockerfile rename to impls/es6/Dockerfile diff --git a/es6/Makefile b/impls/es6/Makefile similarity index 100% rename from es6/Makefile rename to impls/es6/Makefile diff --git a/es6/core.mjs b/impls/es6/core.mjs similarity index 100% rename from es6/core.mjs rename to impls/es6/core.mjs diff --git a/es6/env.mjs b/impls/es6/env.mjs similarity index 100% rename from es6/env.mjs rename to impls/es6/env.mjs diff --git a/es6/node_readline.js b/impls/es6/node_readline.js similarity index 100% rename from es6/node_readline.js rename to impls/es6/node_readline.js diff --git a/es6/package.json b/impls/es6/package.json similarity index 100% rename from es6/package.json rename to impls/es6/package.json diff --git a/es6/printer.mjs b/impls/es6/printer.mjs similarity index 100% rename from es6/printer.mjs rename to impls/es6/printer.mjs diff --git a/es6/reader.mjs b/impls/es6/reader.mjs similarity index 100% rename from es6/reader.mjs rename to impls/es6/reader.mjs diff --git a/es6/run b/impls/es6/run similarity index 100% rename from es6/run rename to impls/es6/run diff --git a/es6/step0_repl.mjs b/impls/es6/step0_repl.mjs similarity index 100% rename from es6/step0_repl.mjs rename to impls/es6/step0_repl.mjs diff --git a/es6/step1_read_print.mjs b/impls/es6/step1_read_print.mjs similarity index 100% rename from es6/step1_read_print.mjs rename to impls/es6/step1_read_print.mjs diff --git a/es6/step2_eval.mjs b/impls/es6/step2_eval.mjs similarity index 100% rename from es6/step2_eval.mjs rename to impls/es6/step2_eval.mjs diff --git a/es6/step3_env.mjs b/impls/es6/step3_env.mjs similarity index 100% rename from es6/step3_env.mjs rename to impls/es6/step3_env.mjs diff --git a/es6/step4_if_fn_do.mjs b/impls/es6/step4_if_fn_do.mjs similarity index 100% rename from es6/step4_if_fn_do.mjs rename to impls/es6/step4_if_fn_do.mjs diff --git a/es6/step5_tco.mjs b/impls/es6/step5_tco.mjs similarity index 100% rename from es6/step5_tco.mjs rename to impls/es6/step5_tco.mjs diff --git a/es6/step6_file.mjs b/impls/es6/step6_file.mjs similarity index 100% rename from es6/step6_file.mjs rename to impls/es6/step6_file.mjs diff --git a/es6/step7_quote.mjs b/impls/es6/step7_quote.mjs similarity index 100% rename from es6/step7_quote.mjs rename to impls/es6/step7_quote.mjs diff --git a/es6/step8_macros.mjs b/impls/es6/step8_macros.mjs similarity index 100% rename from es6/step8_macros.mjs rename to impls/es6/step8_macros.mjs diff --git a/es6/step9_try.mjs b/impls/es6/step9_try.mjs similarity index 100% rename from es6/step9_try.mjs rename to impls/es6/step9_try.mjs diff --git a/es6/stepA_mal.mjs b/impls/es6/stepA_mal.mjs similarity index 100% rename from es6/stepA_mal.mjs rename to impls/es6/stepA_mal.mjs diff --git a/es6/tests/step5_tco.mal b/impls/es6/tests/step5_tco.mal similarity index 100% rename from es6/tests/step5_tco.mal rename to impls/es6/tests/step5_tco.mal diff --git a/es6/types.mjs b/impls/es6/types.mjs similarity index 100% rename from es6/types.mjs rename to impls/es6/types.mjs diff --git a/factor/Dockerfile b/impls/factor/Dockerfile similarity index 100% rename from factor/Dockerfile rename to impls/factor/Dockerfile diff --git a/factor/Makefile b/impls/factor/Makefile similarity index 100% rename from factor/Makefile rename to impls/factor/Makefile diff --git a/factor/lib/core/core-tests.factor b/impls/factor/lib/core/core-tests.factor similarity index 100% rename from factor/lib/core/core-tests.factor rename to impls/factor/lib/core/core-tests.factor diff --git a/factor/lib/core/core.factor b/impls/factor/lib/core/core.factor similarity index 100% rename from factor/lib/core/core.factor rename to impls/factor/lib/core/core.factor diff --git a/factor/lib/env/env-tests.factor b/impls/factor/lib/env/env-tests.factor similarity index 100% rename from factor/lib/env/env-tests.factor rename to impls/factor/lib/env/env-tests.factor diff --git a/factor/lib/env/env.factor b/impls/factor/lib/env/env.factor similarity index 100% rename from factor/lib/env/env.factor rename to impls/factor/lib/env/env.factor diff --git a/factor/lib/printer/printer-tests.factor b/impls/factor/lib/printer/printer-tests.factor similarity index 100% rename from factor/lib/printer/printer-tests.factor rename to impls/factor/lib/printer/printer-tests.factor diff --git a/factor/lib/printer/printer.factor b/impls/factor/lib/printer/printer.factor similarity index 100% rename from factor/lib/printer/printer.factor rename to impls/factor/lib/printer/printer.factor diff --git a/factor/lib/reader/reader-tests.factor b/impls/factor/lib/reader/reader-tests.factor similarity index 100% rename from factor/lib/reader/reader-tests.factor rename to impls/factor/lib/reader/reader-tests.factor diff --git a/factor/lib/reader/reader.factor b/impls/factor/lib/reader/reader.factor similarity index 100% rename from factor/lib/reader/reader.factor rename to impls/factor/lib/reader/reader.factor diff --git a/factor/lib/types/types.factor b/impls/factor/lib/types/types.factor similarity index 100% rename from factor/lib/types/types.factor rename to impls/factor/lib/types/types.factor diff --git a/factor/run b/impls/factor/run similarity index 100% rename from factor/run rename to impls/factor/run diff --git a/factor/step0_repl/deploy.factor b/impls/factor/step0_repl/deploy.factor similarity index 100% rename from factor/step0_repl/deploy.factor rename to impls/factor/step0_repl/deploy.factor diff --git a/factor/step0_repl/step0_repl.factor b/impls/factor/step0_repl/step0_repl.factor similarity index 100% rename from factor/step0_repl/step0_repl.factor rename to impls/factor/step0_repl/step0_repl.factor diff --git a/factor/step1_read_print/deploy.factor b/impls/factor/step1_read_print/deploy.factor similarity index 100% rename from factor/step1_read_print/deploy.factor rename to impls/factor/step1_read_print/deploy.factor diff --git a/factor/step1_read_print/step1_read_print.factor b/impls/factor/step1_read_print/step1_read_print.factor similarity index 100% rename from factor/step1_read_print/step1_read_print.factor rename to impls/factor/step1_read_print/step1_read_print.factor diff --git a/factor/step2_eval/deploy.factor b/impls/factor/step2_eval/deploy.factor similarity index 100% rename from factor/step2_eval/deploy.factor rename to impls/factor/step2_eval/deploy.factor diff --git a/factor/step2_eval/step2_eval.factor b/impls/factor/step2_eval/step2_eval.factor similarity index 100% rename from factor/step2_eval/step2_eval.factor rename to impls/factor/step2_eval/step2_eval.factor diff --git a/factor/step3_env/deploy.factor b/impls/factor/step3_env/deploy.factor similarity index 100% rename from factor/step3_env/deploy.factor rename to impls/factor/step3_env/deploy.factor diff --git a/factor/step3_env/step3_env.factor b/impls/factor/step3_env/step3_env.factor similarity index 100% rename from factor/step3_env/step3_env.factor rename to impls/factor/step3_env/step3_env.factor diff --git a/factor/step4_if_fn_do/deploy.factor b/impls/factor/step4_if_fn_do/deploy.factor similarity index 100% rename from factor/step4_if_fn_do/deploy.factor rename to impls/factor/step4_if_fn_do/deploy.factor diff --git a/factor/step4_if_fn_do/step4_if_fn_do.factor b/impls/factor/step4_if_fn_do/step4_if_fn_do.factor similarity index 100% rename from factor/step4_if_fn_do/step4_if_fn_do.factor rename to impls/factor/step4_if_fn_do/step4_if_fn_do.factor diff --git a/factor/step5_tco/deploy.factor b/impls/factor/step5_tco/deploy.factor similarity index 100% rename from factor/step5_tco/deploy.factor rename to impls/factor/step5_tco/deploy.factor diff --git a/factor/step5_tco/step5_tco.factor b/impls/factor/step5_tco/step5_tco.factor similarity index 100% rename from factor/step5_tco/step5_tco.factor rename to impls/factor/step5_tco/step5_tco.factor diff --git a/factor/step6_file/deploy.factor b/impls/factor/step6_file/deploy.factor similarity index 100% rename from factor/step6_file/deploy.factor rename to impls/factor/step6_file/deploy.factor diff --git a/factor/step6_file/step6_file.factor b/impls/factor/step6_file/step6_file.factor similarity index 100% rename from factor/step6_file/step6_file.factor rename to impls/factor/step6_file/step6_file.factor diff --git a/factor/step7_quote/deploy.factor b/impls/factor/step7_quote/deploy.factor similarity index 100% rename from factor/step7_quote/deploy.factor rename to impls/factor/step7_quote/deploy.factor diff --git a/factor/step7_quote/step7_quote.factor b/impls/factor/step7_quote/step7_quote.factor similarity index 100% rename from factor/step7_quote/step7_quote.factor rename to impls/factor/step7_quote/step7_quote.factor diff --git a/factor/step8_macros/deploy.factor b/impls/factor/step8_macros/deploy.factor similarity index 100% rename from factor/step8_macros/deploy.factor rename to impls/factor/step8_macros/deploy.factor diff --git a/factor/step8_macros/step8_macros.factor b/impls/factor/step8_macros/step8_macros.factor similarity index 100% rename from factor/step8_macros/step8_macros.factor rename to impls/factor/step8_macros/step8_macros.factor diff --git a/factor/step9_try/deploy.factor b/impls/factor/step9_try/deploy.factor similarity index 100% rename from factor/step9_try/deploy.factor rename to impls/factor/step9_try/deploy.factor diff --git a/factor/step9_try/step9_try.factor b/impls/factor/step9_try/step9_try.factor similarity index 100% rename from factor/step9_try/step9_try.factor rename to impls/factor/step9_try/step9_try.factor diff --git a/factor/stepA_mal/deploy.factor b/impls/factor/stepA_mal/deploy.factor similarity index 100% rename from factor/stepA_mal/deploy.factor rename to impls/factor/stepA_mal/deploy.factor diff --git a/factor/stepA_mal/stepA_mal.factor b/impls/factor/stepA_mal/stepA_mal.factor similarity index 100% rename from factor/stepA_mal/stepA_mal.factor rename to impls/factor/stepA_mal/stepA_mal.factor diff --git a/factor/tests/step5_tco.mal b/impls/factor/tests/step5_tco.mal similarity index 100% rename from factor/tests/step5_tco.mal rename to impls/factor/tests/step5_tco.mal diff --git a/fantom/Dockerfile b/impls/fantom/Dockerfile similarity index 100% rename from fantom/Dockerfile rename to impls/fantom/Dockerfile diff --git a/fantom/Makefile b/impls/fantom/Makefile similarity index 100% rename from fantom/Makefile rename to impls/fantom/Makefile diff --git a/fantom/run b/impls/fantom/run similarity index 100% rename from fantom/run rename to impls/fantom/run diff --git a/fantom/src/mallib/build.fan b/impls/fantom/src/mallib/build.fan similarity index 100% rename from fantom/src/mallib/build.fan rename to impls/fantom/src/mallib/build.fan diff --git a/fantom/src/mallib/fan/core.fan b/impls/fantom/src/mallib/fan/core.fan similarity index 100% rename from fantom/src/mallib/fan/core.fan rename to impls/fantom/src/mallib/fan/core.fan diff --git a/fantom/src/mallib/fan/env.fan b/impls/fantom/src/mallib/fan/env.fan similarity index 100% rename from fantom/src/mallib/fan/env.fan rename to impls/fantom/src/mallib/fan/env.fan diff --git a/fantom/src/mallib/fan/interop.fan b/impls/fantom/src/mallib/fan/interop.fan similarity index 100% rename from fantom/src/mallib/fan/interop.fan rename to impls/fantom/src/mallib/fan/interop.fan diff --git a/fantom/src/mallib/fan/reader.fan b/impls/fantom/src/mallib/fan/reader.fan similarity index 100% rename from fantom/src/mallib/fan/reader.fan rename to impls/fantom/src/mallib/fan/reader.fan diff --git a/fantom/src/mallib/fan/types.fan b/impls/fantom/src/mallib/fan/types.fan similarity index 100% rename from fantom/src/mallib/fan/types.fan rename to impls/fantom/src/mallib/fan/types.fan diff --git a/fantom/src/step0_repl/build.fan b/impls/fantom/src/step0_repl/build.fan similarity index 100% rename from fantom/src/step0_repl/build.fan rename to impls/fantom/src/step0_repl/build.fan diff --git a/fantom/src/step0_repl/fan/main.fan b/impls/fantom/src/step0_repl/fan/main.fan similarity index 100% rename from fantom/src/step0_repl/fan/main.fan rename to impls/fantom/src/step0_repl/fan/main.fan diff --git a/fantom/src/step1_read_print/build.fan b/impls/fantom/src/step1_read_print/build.fan similarity index 100% rename from fantom/src/step1_read_print/build.fan rename to impls/fantom/src/step1_read_print/build.fan diff --git a/fantom/src/step1_read_print/fan/main.fan b/impls/fantom/src/step1_read_print/fan/main.fan similarity index 100% rename from fantom/src/step1_read_print/fan/main.fan rename to impls/fantom/src/step1_read_print/fan/main.fan diff --git a/fantom/src/step2_eval/build.fan b/impls/fantom/src/step2_eval/build.fan similarity index 100% rename from fantom/src/step2_eval/build.fan rename to impls/fantom/src/step2_eval/build.fan diff --git a/fantom/src/step2_eval/fan/main.fan b/impls/fantom/src/step2_eval/fan/main.fan similarity index 100% rename from fantom/src/step2_eval/fan/main.fan rename to impls/fantom/src/step2_eval/fan/main.fan diff --git a/fantom/src/step3_env/build.fan b/impls/fantom/src/step3_env/build.fan similarity index 100% rename from fantom/src/step3_env/build.fan rename to impls/fantom/src/step3_env/build.fan diff --git a/fantom/src/step3_env/fan/main.fan b/impls/fantom/src/step3_env/fan/main.fan similarity index 100% rename from fantom/src/step3_env/fan/main.fan rename to impls/fantom/src/step3_env/fan/main.fan diff --git a/fantom/src/step4_if_fn_do/build.fan b/impls/fantom/src/step4_if_fn_do/build.fan similarity index 100% rename from fantom/src/step4_if_fn_do/build.fan rename to impls/fantom/src/step4_if_fn_do/build.fan diff --git a/fantom/src/step4_if_fn_do/fan/main.fan b/impls/fantom/src/step4_if_fn_do/fan/main.fan similarity index 100% rename from fantom/src/step4_if_fn_do/fan/main.fan rename to impls/fantom/src/step4_if_fn_do/fan/main.fan diff --git a/fantom/src/step5_tco/build.fan b/impls/fantom/src/step5_tco/build.fan similarity index 100% rename from fantom/src/step5_tco/build.fan rename to impls/fantom/src/step5_tco/build.fan diff --git a/fantom/src/step5_tco/fan/main.fan b/impls/fantom/src/step5_tco/fan/main.fan similarity index 100% rename from fantom/src/step5_tco/fan/main.fan rename to impls/fantom/src/step5_tco/fan/main.fan diff --git a/fantom/src/step6_file/build.fan b/impls/fantom/src/step6_file/build.fan similarity index 100% rename from fantom/src/step6_file/build.fan rename to impls/fantom/src/step6_file/build.fan diff --git a/fantom/src/step6_file/fan/main.fan b/impls/fantom/src/step6_file/fan/main.fan similarity index 100% rename from fantom/src/step6_file/fan/main.fan rename to impls/fantom/src/step6_file/fan/main.fan diff --git a/fantom/src/step7_quote/build.fan b/impls/fantom/src/step7_quote/build.fan similarity index 100% rename from fantom/src/step7_quote/build.fan rename to impls/fantom/src/step7_quote/build.fan diff --git a/fantom/src/step7_quote/fan/main.fan b/impls/fantom/src/step7_quote/fan/main.fan similarity index 100% rename from fantom/src/step7_quote/fan/main.fan rename to impls/fantom/src/step7_quote/fan/main.fan diff --git a/fantom/src/step8_macros/build.fan b/impls/fantom/src/step8_macros/build.fan similarity index 100% rename from fantom/src/step8_macros/build.fan rename to impls/fantom/src/step8_macros/build.fan diff --git a/fantom/src/step8_macros/fan/main.fan b/impls/fantom/src/step8_macros/fan/main.fan similarity index 100% rename from fantom/src/step8_macros/fan/main.fan rename to impls/fantom/src/step8_macros/fan/main.fan diff --git a/fantom/src/step9_try/build.fan b/impls/fantom/src/step9_try/build.fan similarity index 100% rename from fantom/src/step9_try/build.fan rename to impls/fantom/src/step9_try/build.fan diff --git a/fantom/src/step9_try/fan/main.fan b/impls/fantom/src/step9_try/fan/main.fan similarity index 100% rename from fantom/src/step9_try/fan/main.fan rename to impls/fantom/src/step9_try/fan/main.fan diff --git a/fantom/src/stepA_mal/build.fan b/impls/fantom/src/stepA_mal/build.fan similarity index 100% rename from fantom/src/stepA_mal/build.fan rename to impls/fantom/src/stepA_mal/build.fan diff --git a/fantom/src/stepA_mal/fan/main.fan b/impls/fantom/src/stepA_mal/fan/main.fan similarity index 100% rename from fantom/src/stepA_mal/fan/main.fan rename to impls/fantom/src/stepA_mal/fan/main.fan diff --git a/fantom/tests/step5_tco.mal b/impls/fantom/tests/step5_tco.mal similarity index 100% rename from fantom/tests/step5_tco.mal rename to impls/fantom/tests/step5_tco.mal diff --git a/fantom/tests/stepA_mal.mal b/impls/fantom/tests/stepA_mal.mal similarity index 100% rename from fantom/tests/stepA_mal.mal rename to impls/fantom/tests/stepA_mal.mal diff --git a/forth/Dockerfile b/impls/forth/Dockerfile similarity index 100% rename from forth/Dockerfile rename to impls/forth/Dockerfile diff --git a/forth/Makefile b/impls/forth/Makefile similarity index 100% rename from forth/Makefile rename to impls/forth/Makefile diff --git a/forth/core.fs b/impls/forth/core.fs similarity index 100% rename from forth/core.fs rename to impls/forth/core.fs diff --git a/forth/env.fs b/impls/forth/env.fs similarity index 100% rename from forth/env.fs rename to impls/forth/env.fs diff --git a/forth/misc-tests.fs b/impls/forth/misc-tests.fs similarity index 100% rename from forth/misc-tests.fs rename to impls/forth/misc-tests.fs diff --git a/forth/printer.fs b/impls/forth/printer.fs similarity index 100% rename from forth/printer.fs rename to impls/forth/printer.fs diff --git a/forth/reader.fs b/impls/forth/reader.fs similarity index 100% rename from forth/reader.fs rename to impls/forth/reader.fs diff --git a/forth/run b/impls/forth/run similarity index 100% rename from forth/run rename to impls/forth/run diff --git a/forth/step0_repl.fs b/impls/forth/step0_repl.fs similarity index 100% rename from forth/step0_repl.fs rename to impls/forth/step0_repl.fs diff --git a/forth/step1_read_print.fs b/impls/forth/step1_read_print.fs similarity index 100% rename from forth/step1_read_print.fs rename to impls/forth/step1_read_print.fs diff --git a/forth/step2_eval.fs b/impls/forth/step2_eval.fs similarity index 100% rename from forth/step2_eval.fs rename to impls/forth/step2_eval.fs diff --git a/forth/step3_env.fs b/impls/forth/step3_env.fs similarity index 100% rename from forth/step3_env.fs rename to impls/forth/step3_env.fs diff --git a/forth/step4_if_fn_do.fs b/impls/forth/step4_if_fn_do.fs similarity index 100% rename from forth/step4_if_fn_do.fs rename to impls/forth/step4_if_fn_do.fs diff --git a/forth/step5_tco.fs b/impls/forth/step5_tco.fs similarity index 100% rename from forth/step5_tco.fs rename to impls/forth/step5_tco.fs diff --git a/forth/step6_file.fs b/impls/forth/step6_file.fs similarity index 100% rename from forth/step6_file.fs rename to impls/forth/step6_file.fs diff --git a/forth/step7_quote.fs b/impls/forth/step7_quote.fs similarity index 100% rename from forth/step7_quote.fs rename to impls/forth/step7_quote.fs diff --git a/forth/step8_macros.fs b/impls/forth/step8_macros.fs similarity index 100% rename from forth/step8_macros.fs rename to impls/forth/step8_macros.fs diff --git a/forth/step9_try.fs b/impls/forth/step9_try.fs similarity index 100% rename from forth/step9_try.fs rename to impls/forth/step9_try.fs diff --git a/forth/stepA_mal.fs b/impls/forth/stepA_mal.fs similarity index 100% rename from forth/stepA_mal.fs rename to impls/forth/stepA_mal.fs diff --git a/forth/str.fs b/impls/forth/str.fs similarity index 100% rename from forth/str.fs rename to impls/forth/str.fs diff --git a/forth/tests/step5_tco.mal b/impls/forth/tests/step5_tco.mal similarity index 100% rename from forth/tests/step5_tco.mal rename to impls/forth/tests/step5_tco.mal diff --git a/forth/tests/stepA_mal.mal b/impls/forth/tests/stepA_mal.mal similarity index 100% rename from forth/tests/stepA_mal.mal rename to impls/forth/tests/stepA_mal.mal diff --git a/forth/types.fs b/impls/forth/types.fs similarity index 100% rename from forth/types.fs rename to impls/forth/types.fs diff --git a/fsharp/Dockerfile b/impls/fsharp/Dockerfile similarity index 100% rename from fsharp/Dockerfile rename to impls/fsharp/Dockerfile diff --git a/fsharp/Makefile b/impls/fsharp/Makefile similarity index 100% rename from fsharp/Makefile rename to impls/fsharp/Makefile diff --git a/fsharp/core.fs b/impls/fsharp/core.fs similarity index 100% rename from fsharp/core.fs rename to impls/fsharp/core.fs diff --git a/fsharp/env.fs b/impls/fsharp/env.fs similarity index 100% rename from fsharp/env.fs rename to impls/fsharp/env.fs diff --git a/fsharp/error.fs b/impls/fsharp/error.fs similarity index 100% rename from fsharp/error.fs rename to impls/fsharp/error.fs diff --git a/fsharp/node.fs b/impls/fsharp/node.fs similarity index 100% rename from fsharp/node.fs rename to impls/fsharp/node.fs diff --git a/fsharp/printer.fs b/impls/fsharp/printer.fs similarity index 100% rename from fsharp/printer.fs rename to impls/fsharp/printer.fs diff --git a/fsharp/reader.fs b/impls/fsharp/reader.fs similarity index 100% rename from fsharp/reader.fs rename to impls/fsharp/reader.fs diff --git a/fsharp/readline.fs b/impls/fsharp/readline.fs similarity index 100% rename from fsharp/readline.fs rename to impls/fsharp/readline.fs diff --git a/fsharp/run b/impls/fsharp/run similarity index 100% rename from fsharp/run rename to impls/fsharp/run diff --git a/fsharp/step0_repl.fs b/impls/fsharp/step0_repl.fs similarity index 100% rename from fsharp/step0_repl.fs rename to impls/fsharp/step0_repl.fs diff --git a/fsharp/step1_read_print.fs b/impls/fsharp/step1_read_print.fs similarity index 100% rename from fsharp/step1_read_print.fs rename to impls/fsharp/step1_read_print.fs diff --git a/fsharp/step2_eval.fs b/impls/fsharp/step2_eval.fs similarity index 100% rename from fsharp/step2_eval.fs rename to impls/fsharp/step2_eval.fs diff --git a/fsharp/step3_env.fs b/impls/fsharp/step3_env.fs similarity index 100% rename from fsharp/step3_env.fs rename to impls/fsharp/step3_env.fs diff --git a/fsharp/step4_if_fn_do.fs b/impls/fsharp/step4_if_fn_do.fs similarity index 100% rename from fsharp/step4_if_fn_do.fs rename to impls/fsharp/step4_if_fn_do.fs diff --git a/fsharp/step5_tco.fs b/impls/fsharp/step5_tco.fs similarity index 100% rename from fsharp/step5_tco.fs rename to impls/fsharp/step5_tco.fs diff --git a/fsharp/step6_file.fs b/impls/fsharp/step6_file.fs similarity index 100% rename from fsharp/step6_file.fs rename to impls/fsharp/step6_file.fs diff --git a/fsharp/step7_quote.fs b/impls/fsharp/step7_quote.fs similarity index 100% rename from fsharp/step7_quote.fs rename to impls/fsharp/step7_quote.fs diff --git a/fsharp/step8_macros.fs b/impls/fsharp/step8_macros.fs similarity index 100% rename from fsharp/step8_macros.fs rename to impls/fsharp/step8_macros.fs diff --git a/fsharp/step9_try.fs b/impls/fsharp/step9_try.fs similarity index 100% rename from fsharp/step9_try.fs rename to impls/fsharp/step9_try.fs diff --git a/fsharp/stepA_mal.fs b/impls/fsharp/stepA_mal.fs similarity index 100% rename from fsharp/stepA_mal.fs rename to impls/fsharp/stepA_mal.fs diff --git a/fsharp/terminal.cs b/impls/fsharp/terminal.cs similarity index 100% rename from fsharp/terminal.cs rename to impls/fsharp/terminal.cs diff --git a/fsharp/tests/step5_tco.mal b/impls/fsharp/tests/step5_tco.mal similarity index 100% rename from fsharp/tests/step5_tco.mal rename to impls/fsharp/tests/step5_tco.mal diff --git a/fsharp/tokenizer.fs b/impls/fsharp/tokenizer.fs similarity index 100% rename from fsharp/tokenizer.fs rename to impls/fsharp/tokenizer.fs diff --git a/fsharp/types.fs b/impls/fsharp/types.fs similarity index 100% rename from fsharp/types.fs rename to impls/fsharp/types.fs diff --git a/gnu-smalltalk/Dockerfile b/impls/gnu-smalltalk/Dockerfile similarity index 100% rename from gnu-smalltalk/Dockerfile rename to impls/gnu-smalltalk/Dockerfile diff --git a/gnu-smalltalk/Makefile b/impls/gnu-smalltalk/Makefile similarity index 100% rename from gnu-smalltalk/Makefile rename to impls/gnu-smalltalk/Makefile diff --git a/gnu-smalltalk/core.st b/impls/gnu-smalltalk/core.st similarity index 100% rename from gnu-smalltalk/core.st rename to impls/gnu-smalltalk/core.st diff --git a/gnu-smalltalk/env.st b/impls/gnu-smalltalk/env.st similarity index 100% rename from gnu-smalltalk/env.st rename to impls/gnu-smalltalk/env.st diff --git a/gnu-smalltalk/func.st b/impls/gnu-smalltalk/func.st similarity index 100% rename from gnu-smalltalk/func.st rename to impls/gnu-smalltalk/func.st diff --git a/gnu-smalltalk/printer.st b/impls/gnu-smalltalk/printer.st similarity index 100% rename from gnu-smalltalk/printer.st rename to impls/gnu-smalltalk/printer.st diff --git a/gnu-smalltalk/reader.st b/impls/gnu-smalltalk/reader.st similarity index 100% rename from gnu-smalltalk/reader.st rename to impls/gnu-smalltalk/reader.st diff --git a/gnu-smalltalk/readline.st b/impls/gnu-smalltalk/readline.st similarity index 100% rename from gnu-smalltalk/readline.st rename to impls/gnu-smalltalk/readline.st diff --git a/gnu-smalltalk/run b/impls/gnu-smalltalk/run similarity index 100% rename from gnu-smalltalk/run rename to impls/gnu-smalltalk/run diff --git a/gnu-smalltalk/step0_repl.st b/impls/gnu-smalltalk/step0_repl.st similarity index 100% rename from gnu-smalltalk/step0_repl.st rename to impls/gnu-smalltalk/step0_repl.st diff --git a/gnu-smalltalk/step1_read_print.st b/impls/gnu-smalltalk/step1_read_print.st similarity index 100% rename from gnu-smalltalk/step1_read_print.st rename to impls/gnu-smalltalk/step1_read_print.st diff --git a/gnu-smalltalk/step2_eval.st b/impls/gnu-smalltalk/step2_eval.st similarity index 100% rename from gnu-smalltalk/step2_eval.st rename to impls/gnu-smalltalk/step2_eval.st diff --git a/gnu-smalltalk/step3_env.st b/impls/gnu-smalltalk/step3_env.st similarity index 100% rename from gnu-smalltalk/step3_env.st rename to impls/gnu-smalltalk/step3_env.st diff --git a/gnu-smalltalk/step4_if_fn_do.st b/impls/gnu-smalltalk/step4_if_fn_do.st similarity index 100% rename from gnu-smalltalk/step4_if_fn_do.st rename to impls/gnu-smalltalk/step4_if_fn_do.st diff --git a/gnu-smalltalk/step5_tco.st b/impls/gnu-smalltalk/step5_tco.st similarity index 100% rename from gnu-smalltalk/step5_tco.st rename to impls/gnu-smalltalk/step5_tco.st diff --git a/gnu-smalltalk/step6_file.st b/impls/gnu-smalltalk/step6_file.st similarity index 100% rename from gnu-smalltalk/step6_file.st rename to impls/gnu-smalltalk/step6_file.st diff --git a/gnu-smalltalk/step7_quote.st b/impls/gnu-smalltalk/step7_quote.st similarity index 100% rename from gnu-smalltalk/step7_quote.st rename to impls/gnu-smalltalk/step7_quote.st diff --git a/gnu-smalltalk/step8_macros.st b/impls/gnu-smalltalk/step8_macros.st similarity index 100% rename from gnu-smalltalk/step8_macros.st rename to impls/gnu-smalltalk/step8_macros.st diff --git a/gnu-smalltalk/step9_try.st b/impls/gnu-smalltalk/step9_try.st similarity index 100% rename from gnu-smalltalk/step9_try.st rename to impls/gnu-smalltalk/step9_try.st diff --git a/gnu-smalltalk/stepA_mal.st b/impls/gnu-smalltalk/stepA_mal.st similarity index 100% rename from gnu-smalltalk/stepA_mal.st rename to impls/gnu-smalltalk/stepA_mal.st diff --git a/gnu-smalltalk/tests/stepA_mal.mal b/impls/gnu-smalltalk/tests/stepA_mal.mal similarity index 100% rename from gnu-smalltalk/tests/stepA_mal.mal rename to impls/gnu-smalltalk/tests/stepA_mal.mal diff --git a/gnu-smalltalk/types.st b/impls/gnu-smalltalk/types.st similarity index 100% rename from gnu-smalltalk/types.st rename to impls/gnu-smalltalk/types.st diff --git a/gnu-smalltalk/util.st b/impls/gnu-smalltalk/util.st similarity index 100% rename from gnu-smalltalk/util.st rename to impls/gnu-smalltalk/util.st diff --git a/go/Dockerfile b/impls/go/Dockerfile similarity index 100% rename from go/Dockerfile rename to impls/go/Dockerfile diff --git a/go/Makefile b/impls/go/Makefile similarity index 100% rename from go/Makefile rename to impls/go/Makefile diff --git a/go/run b/impls/go/run similarity index 100% rename from go/run rename to impls/go/run diff --git a/go/src/core/core.go b/impls/go/src/core/core.go similarity index 100% rename from go/src/core/core.go rename to impls/go/src/core/core.go diff --git a/go/src/env/env.go b/impls/go/src/env/env.go similarity index 100% rename from go/src/env/env.go rename to impls/go/src/env/env.go diff --git a/go/src/printer/printer.go b/impls/go/src/printer/printer.go similarity index 100% rename from go/src/printer/printer.go rename to impls/go/src/printer/printer.go diff --git a/go/src/reader/reader.go b/impls/go/src/reader/reader.go similarity index 100% rename from go/src/reader/reader.go rename to impls/go/src/reader/reader.go diff --git a/go/src/readline/readline.go b/impls/go/src/readline/readline.go similarity index 100% rename from go/src/readline/readline.go rename to impls/go/src/readline/readline.go diff --git a/go/src/step0_repl/step0_repl.go b/impls/go/src/step0_repl/step0_repl.go similarity index 100% rename from go/src/step0_repl/step0_repl.go rename to impls/go/src/step0_repl/step0_repl.go diff --git a/go/src/step1_read_print/step1_read_print.go b/impls/go/src/step1_read_print/step1_read_print.go similarity index 100% rename from go/src/step1_read_print/step1_read_print.go rename to impls/go/src/step1_read_print/step1_read_print.go diff --git a/go/src/step2_eval/step2_eval.go b/impls/go/src/step2_eval/step2_eval.go similarity index 100% rename from go/src/step2_eval/step2_eval.go rename to impls/go/src/step2_eval/step2_eval.go diff --git a/go/src/step3_env/step3_env.go b/impls/go/src/step3_env/step3_env.go similarity index 100% rename from go/src/step3_env/step3_env.go rename to impls/go/src/step3_env/step3_env.go diff --git a/go/src/step4_if_fn_do/step4_if_fn_do.go b/impls/go/src/step4_if_fn_do/step4_if_fn_do.go similarity index 100% rename from go/src/step4_if_fn_do/step4_if_fn_do.go rename to impls/go/src/step4_if_fn_do/step4_if_fn_do.go diff --git a/go/src/step5_tco/step5_tco.go b/impls/go/src/step5_tco/step5_tco.go similarity index 100% rename from go/src/step5_tco/step5_tco.go rename to impls/go/src/step5_tco/step5_tco.go diff --git a/go/src/step6_file/step6_file.go b/impls/go/src/step6_file/step6_file.go similarity index 100% rename from go/src/step6_file/step6_file.go rename to impls/go/src/step6_file/step6_file.go diff --git a/go/src/step7_quote/step7_quote.go b/impls/go/src/step7_quote/step7_quote.go similarity index 100% rename from go/src/step7_quote/step7_quote.go rename to impls/go/src/step7_quote/step7_quote.go diff --git a/go/src/step8_macros/step8_macros.go b/impls/go/src/step8_macros/step8_macros.go similarity index 100% rename from go/src/step8_macros/step8_macros.go rename to impls/go/src/step8_macros/step8_macros.go diff --git a/go/src/step9_try/step9_try.go b/impls/go/src/step9_try/step9_try.go similarity index 100% rename from go/src/step9_try/step9_try.go rename to impls/go/src/step9_try/step9_try.go diff --git a/go/src/stepA_mal/stepA_mal.go b/impls/go/src/stepA_mal/stepA_mal.go similarity index 100% rename from go/src/stepA_mal/stepA_mal.go rename to impls/go/src/stepA_mal/stepA_mal.go diff --git a/go/src/types/types.go b/impls/go/src/types/types.go similarity index 100% rename from go/src/types/types.go rename to impls/go/src/types/types.go diff --git a/go/tests/step2_eval.mal b/impls/go/tests/step2_eval.mal similarity index 100% rename from go/tests/step2_eval.mal rename to impls/go/tests/step2_eval.mal diff --git a/go/tests/step4_if_fn_do.mal b/impls/go/tests/step4_if_fn_do.mal similarity index 100% rename from go/tests/step4_if_fn_do.mal rename to impls/go/tests/step4_if_fn_do.mal diff --git a/go/tests/step5_tco.mal b/impls/go/tests/step5_tco.mal similarity index 100% rename from go/tests/step5_tco.mal rename to impls/go/tests/step5_tco.mal diff --git a/groovy/Dockerfile b/impls/groovy/Dockerfile similarity index 100% rename from groovy/Dockerfile rename to impls/groovy/Dockerfile diff --git a/groovy/GroovyWrapper.groovy b/impls/groovy/GroovyWrapper.groovy similarity index 100% rename from groovy/GroovyWrapper.groovy rename to impls/groovy/GroovyWrapper.groovy diff --git a/groovy/Makefile b/impls/groovy/Makefile similarity index 100% rename from groovy/Makefile rename to impls/groovy/Makefile diff --git a/groovy/core.groovy b/impls/groovy/core.groovy similarity index 100% rename from groovy/core.groovy rename to impls/groovy/core.groovy diff --git a/groovy/env.groovy b/impls/groovy/env.groovy similarity index 100% rename from groovy/env.groovy rename to impls/groovy/env.groovy diff --git a/groovy/printer.groovy b/impls/groovy/printer.groovy similarity index 100% rename from groovy/printer.groovy rename to impls/groovy/printer.groovy diff --git a/groovy/reader.groovy b/impls/groovy/reader.groovy similarity index 100% rename from groovy/reader.groovy rename to impls/groovy/reader.groovy diff --git a/groovy/run b/impls/groovy/run similarity index 100% rename from groovy/run rename to impls/groovy/run diff --git a/groovy/step0_repl.groovy b/impls/groovy/step0_repl.groovy similarity index 100% rename from groovy/step0_repl.groovy rename to impls/groovy/step0_repl.groovy diff --git a/groovy/step1_read_print.groovy b/impls/groovy/step1_read_print.groovy similarity index 100% rename from groovy/step1_read_print.groovy rename to impls/groovy/step1_read_print.groovy diff --git a/groovy/step2_eval.groovy b/impls/groovy/step2_eval.groovy similarity index 100% rename from groovy/step2_eval.groovy rename to impls/groovy/step2_eval.groovy diff --git a/groovy/step3_env.groovy b/impls/groovy/step3_env.groovy similarity index 100% rename from groovy/step3_env.groovy rename to impls/groovy/step3_env.groovy diff --git a/groovy/step4_if_fn_do.groovy b/impls/groovy/step4_if_fn_do.groovy similarity index 100% rename from groovy/step4_if_fn_do.groovy rename to impls/groovy/step4_if_fn_do.groovy diff --git a/groovy/step5_tco.groovy b/impls/groovy/step5_tco.groovy similarity index 100% rename from groovy/step5_tco.groovy rename to impls/groovy/step5_tco.groovy diff --git a/groovy/step6_file.groovy b/impls/groovy/step6_file.groovy similarity index 100% rename from groovy/step6_file.groovy rename to impls/groovy/step6_file.groovy diff --git a/groovy/step7_quote.groovy b/impls/groovy/step7_quote.groovy similarity index 100% rename from groovy/step7_quote.groovy rename to impls/groovy/step7_quote.groovy diff --git a/groovy/step8_macros.groovy b/impls/groovy/step8_macros.groovy similarity index 100% rename from groovy/step8_macros.groovy rename to impls/groovy/step8_macros.groovy diff --git a/groovy/step9_try.groovy b/impls/groovy/step9_try.groovy similarity index 100% rename from groovy/step9_try.groovy rename to impls/groovy/step9_try.groovy diff --git a/groovy/stepA_mal.groovy b/impls/groovy/stepA_mal.groovy similarity index 100% rename from groovy/stepA_mal.groovy rename to impls/groovy/stepA_mal.groovy diff --git a/groovy/tests/step5_tco.mal b/impls/groovy/tests/step5_tco.mal similarity index 100% rename from groovy/tests/step5_tco.mal rename to impls/groovy/tests/step5_tco.mal diff --git a/groovy/types.groovy b/impls/groovy/types.groovy similarity index 100% rename from groovy/types.groovy rename to impls/groovy/types.groovy diff --git a/guile/Dockerfile b/impls/guile/Dockerfile similarity index 100% rename from guile/Dockerfile rename to impls/guile/Dockerfile diff --git a/guile/Makefile b/impls/guile/Makefile similarity index 100% rename from guile/Makefile rename to impls/guile/Makefile diff --git a/guile/core.scm b/impls/guile/core.scm similarity index 100% rename from guile/core.scm rename to impls/guile/core.scm diff --git a/guile/env.scm b/impls/guile/env.scm similarity index 100% rename from guile/env.scm rename to impls/guile/env.scm diff --git a/guile/pcre.scm b/impls/guile/pcre.scm similarity index 100% rename from guile/pcre.scm rename to impls/guile/pcre.scm diff --git a/guile/printer.scm b/impls/guile/printer.scm similarity index 100% rename from guile/printer.scm rename to impls/guile/printer.scm diff --git a/guile/reader.scm b/impls/guile/reader.scm similarity index 100% rename from guile/reader.scm rename to impls/guile/reader.scm diff --git a/guile/readline.scm b/impls/guile/readline.scm similarity index 100% rename from guile/readline.scm rename to impls/guile/readline.scm diff --git a/guile/run b/impls/guile/run similarity index 100% rename from guile/run rename to impls/guile/run diff --git a/guile/step0_repl.scm b/impls/guile/step0_repl.scm similarity index 100% rename from guile/step0_repl.scm rename to impls/guile/step0_repl.scm diff --git a/guile/step1_read_print.scm b/impls/guile/step1_read_print.scm similarity index 100% rename from guile/step1_read_print.scm rename to impls/guile/step1_read_print.scm diff --git a/guile/step2_eval.scm b/impls/guile/step2_eval.scm similarity index 100% rename from guile/step2_eval.scm rename to impls/guile/step2_eval.scm diff --git a/guile/step3_env.scm b/impls/guile/step3_env.scm similarity index 100% rename from guile/step3_env.scm rename to impls/guile/step3_env.scm diff --git a/guile/step4_if_fn_do.scm b/impls/guile/step4_if_fn_do.scm similarity index 100% rename from guile/step4_if_fn_do.scm rename to impls/guile/step4_if_fn_do.scm diff --git a/guile/step5_tco.scm b/impls/guile/step5_tco.scm similarity index 100% rename from guile/step5_tco.scm rename to impls/guile/step5_tco.scm diff --git a/guile/step6_file.scm b/impls/guile/step6_file.scm similarity index 100% rename from guile/step6_file.scm rename to impls/guile/step6_file.scm diff --git a/guile/step7_quote.scm b/impls/guile/step7_quote.scm similarity index 100% rename from guile/step7_quote.scm rename to impls/guile/step7_quote.scm diff --git a/guile/step8_macros.scm b/impls/guile/step8_macros.scm similarity index 100% rename from guile/step8_macros.scm rename to impls/guile/step8_macros.scm diff --git a/guile/step9_try.scm b/impls/guile/step9_try.scm similarity index 100% rename from guile/step9_try.scm rename to impls/guile/step9_try.scm diff --git a/guile/stepA_mal.scm b/impls/guile/stepA_mal.scm similarity index 100% rename from guile/stepA_mal.scm rename to impls/guile/stepA_mal.scm diff --git a/guile/types.scm b/impls/guile/types.scm similarity index 100% rename from guile/types.scm rename to impls/guile/types.scm diff --git a/haskell/Core.hs b/impls/haskell/Core.hs similarity index 100% rename from haskell/Core.hs rename to impls/haskell/Core.hs diff --git a/haskell/Dockerfile b/impls/haskell/Dockerfile similarity index 100% rename from haskell/Dockerfile rename to impls/haskell/Dockerfile diff --git a/haskell/Env.hs b/impls/haskell/Env.hs similarity index 100% rename from haskell/Env.hs rename to impls/haskell/Env.hs diff --git a/haskell/Makefile b/impls/haskell/Makefile similarity index 100% rename from haskell/Makefile rename to impls/haskell/Makefile diff --git a/haskell/Printer.hs b/impls/haskell/Printer.hs similarity index 100% rename from haskell/Printer.hs rename to impls/haskell/Printer.hs diff --git a/haskell/Reader.hs b/impls/haskell/Reader.hs similarity index 100% rename from haskell/Reader.hs rename to impls/haskell/Reader.hs diff --git a/haskell/Readline.hs b/impls/haskell/Readline.hs similarity index 100% rename from haskell/Readline.hs rename to impls/haskell/Readline.hs diff --git a/haskell/Types.hs b/impls/haskell/Types.hs similarity index 100% rename from haskell/Types.hs rename to impls/haskell/Types.hs diff --git a/haskell/run b/impls/haskell/run similarity index 100% rename from haskell/run rename to impls/haskell/run diff --git a/haskell/step0_repl.hs b/impls/haskell/step0_repl.hs similarity index 100% rename from haskell/step0_repl.hs rename to impls/haskell/step0_repl.hs diff --git a/haskell/step1_read_print.hs b/impls/haskell/step1_read_print.hs similarity index 100% rename from haskell/step1_read_print.hs rename to impls/haskell/step1_read_print.hs diff --git a/haskell/step2_eval.hs b/impls/haskell/step2_eval.hs similarity index 100% rename from haskell/step2_eval.hs rename to impls/haskell/step2_eval.hs diff --git a/haskell/step3_env.hs b/impls/haskell/step3_env.hs similarity index 100% rename from haskell/step3_env.hs rename to impls/haskell/step3_env.hs diff --git a/haskell/step4_if_fn_do.hs b/impls/haskell/step4_if_fn_do.hs similarity index 100% rename from haskell/step4_if_fn_do.hs rename to impls/haskell/step4_if_fn_do.hs diff --git a/haskell/step5_tco.hs b/impls/haskell/step5_tco.hs similarity index 100% rename from haskell/step5_tco.hs rename to impls/haskell/step5_tco.hs diff --git a/haskell/step6_file.hs b/impls/haskell/step6_file.hs similarity index 100% rename from haskell/step6_file.hs rename to impls/haskell/step6_file.hs diff --git a/haskell/step7_quote.hs b/impls/haskell/step7_quote.hs similarity index 100% rename from haskell/step7_quote.hs rename to impls/haskell/step7_quote.hs diff --git a/haskell/step8_macros.hs b/impls/haskell/step8_macros.hs similarity index 100% rename from haskell/step8_macros.hs rename to impls/haskell/step8_macros.hs diff --git a/haskell/step9_try.hs b/impls/haskell/step9_try.hs similarity index 100% rename from haskell/step9_try.hs rename to impls/haskell/step9_try.hs diff --git a/haskell/stepA_mal.hs b/impls/haskell/stepA_mal.hs similarity index 100% rename from haskell/stepA_mal.hs rename to impls/haskell/stepA_mal.hs diff --git a/haskell/tests/step5_tco.mal b/impls/haskell/tests/step5_tco.mal similarity index 100% rename from haskell/tests/step5_tco.mal rename to impls/haskell/tests/step5_tco.mal diff --git a/haxe/Compat.hx b/impls/haxe/Compat.hx similarity index 100% rename from haxe/Compat.hx rename to impls/haxe/Compat.hx diff --git a/haxe/Dockerfile b/impls/haxe/Dockerfile similarity index 100% rename from haxe/Dockerfile rename to impls/haxe/Dockerfile diff --git a/haxe/Makefile b/impls/haxe/Makefile similarity index 100% rename from haxe/Makefile rename to impls/haxe/Makefile diff --git a/haxe/Step0_repl.hx b/impls/haxe/Step0_repl.hx similarity index 100% rename from haxe/Step0_repl.hx rename to impls/haxe/Step0_repl.hx diff --git a/haxe/Step1_read_print.hx b/impls/haxe/Step1_read_print.hx similarity index 100% rename from haxe/Step1_read_print.hx rename to impls/haxe/Step1_read_print.hx diff --git a/haxe/Step2_eval.hx b/impls/haxe/Step2_eval.hx similarity index 100% rename from haxe/Step2_eval.hx rename to impls/haxe/Step2_eval.hx diff --git a/haxe/Step3_env.hx b/impls/haxe/Step3_env.hx similarity index 100% rename from haxe/Step3_env.hx rename to impls/haxe/Step3_env.hx diff --git a/haxe/Step4_if_fn_do.hx b/impls/haxe/Step4_if_fn_do.hx similarity index 100% rename from haxe/Step4_if_fn_do.hx rename to impls/haxe/Step4_if_fn_do.hx diff --git a/haxe/Step5_tco.hx b/impls/haxe/Step5_tco.hx similarity index 100% rename from haxe/Step5_tco.hx rename to impls/haxe/Step5_tco.hx diff --git a/haxe/Step6_file.hx b/impls/haxe/Step6_file.hx similarity index 100% rename from haxe/Step6_file.hx rename to impls/haxe/Step6_file.hx diff --git a/haxe/Step7_quote.hx b/impls/haxe/Step7_quote.hx similarity index 100% rename from haxe/Step7_quote.hx rename to impls/haxe/Step7_quote.hx diff --git a/haxe/Step8_macros.hx b/impls/haxe/Step8_macros.hx similarity index 100% rename from haxe/Step8_macros.hx rename to impls/haxe/Step8_macros.hx diff --git a/haxe/Step9_try.hx b/impls/haxe/Step9_try.hx similarity index 100% rename from haxe/Step9_try.hx rename to impls/haxe/Step9_try.hx diff --git a/haxe/StepA_mal.hx b/impls/haxe/StepA_mal.hx similarity index 100% rename from haxe/StepA_mal.hx rename to impls/haxe/StepA_mal.hx diff --git a/haxe/core/Core.hx b/impls/haxe/core/Core.hx similarity index 100% rename from haxe/core/Core.hx rename to impls/haxe/core/Core.hx diff --git a/haxe/env/Env.hx b/impls/haxe/env/Env.hx similarity index 100% rename from haxe/env/Env.hx rename to impls/haxe/env/Env.hx diff --git a/haxe/node_readline.js b/impls/haxe/node_readline.js similarity index 100% rename from haxe/node_readline.js rename to impls/haxe/node_readline.js diff --git a/haxe/package.json b/impls/haxe/package.json similarity index 100% rename from haxe/package.json rename to impls/haxe/package.json diff --git a/haxe/printer/Printer.hx b/impls/haxe/printer/Printer.hx similarity index 100% rename from haxe/printer/Printer.hx rename to impls/haxe/printer/Printer.hx diff --git a/haxe/reader/BlankLine.hx b/impls/haxe/reader/BlankLine.hx similarity index 100% rename from haxe/reader/BlankLine.hx rename to impls/haxe/reader/BlankLine.hx diff --git a/haxe/reader/Reader.hx b/impls/haxe/reader/Reader.hx similarity index 100% rename from haxe/reader/Reader.hx rename to impls/haxe/reader/Reader.hx diff --git a/haxe/run b/impls/haxe/run similarity index 100% rename from haxe/run rename to impls/haxe/run diff --git a/haxe/tests/step5_tco.mal b/impls/haxe/tests/step5_tco.mal similarity index 100% rename from haxe/tests/step5_tco.mal rename to impls/haxe/tests/step5_tco.mal diff --git a/haxe/types/MalException.hx b/impls/haxe/types/MalException.hx similarity index 100% rename from haxe/types/MalException.hx rename to impls/haxe/types/MalException.hx diff --git a/haxe/types/Types.hx b/impls/haxe/types/Types.hx similarity index 100% rename from haxe/types/Types.hx rename to impls/haxe/types/Types.hx diff --git a/hy/Dockerfile b/impls/hy/Dockerfile similarity index 100% rename from hy/Dockerfile rename to impls/hy/Dockerfile diff --git a/hy/Makefile b/impls/hy/Makefile similarity index 100% rename from hy/Makefile rename to impls/hy/Makefile diff --git a/hy/core.hy b/impls/hy/core.hy similarity index 100% rename from hy/core.hy rename to impls/hy/core.hy diff --git a/hy/env.hy b/impls/hy/env.hy similarity index 100% rename from hy/env.hy rename to impls/hy/env.hy diff --git a/hy/mal_types.hy b/impls/hy/mal_types.hy similarity index 100% rename from hy/mal_types.hy rename to impls/hy/mal_types.hy diff --git a/hy/printer.hy b/impls/hy/printer.hy similarity index 100% rename from hy/printer.hy rename to impls/hy/printer.hy diff --git a/hy/reader.hy b/impls/hy/reader.hy similarity index 100% rename from hy/reader.hy rename to impls/hy/reader.hy diff --git a/hy/run b/impls/hy/run similarity index 100% rename from hy/run rename to impls/hy/run diff --git a/hy/step0_repl.hy b/impls/hy/step0_repl.hy similarity index 100% rename from hy/step0_repl.hy rename to impls/hy/step0_repl.hy diff --git a/hy/step1_read_print.hy b/impls/hy/step1_read_print.hy similarity index 100% rename from hy/step1_read_print.hy rename to impls/hy/step1_read_print.hy diff --git a/hy/step2_eval.hy b/impls/hy/step2_eval.hy similarity index 100% rename from hy/step2_eval.hy rename to impls/hy/step2_eval.hy diff --git a/hy/step3_env.hy b/impls/hy/step3_env.hy similarity index 100% rename from hy/step3_env.hy rename to impls/hy/step3_env.hy diff --git a/hy/step4_if_fn_do.hy b/impls/hy/step4_if_fn_do.hy similarity index 100% rename from hy/step4_if_fn_do.hy rename to impls/hy/step4_if_fn_do.hy diff --git a/hy/step5_tco.hy b/impls/hy/step5_tco.hy similarity index 100% rename from hy/step5_tco.hy rename to impls/hy/step5_tco.hy diff --git a/hy/step6_file.hy b/impls/hy/step6_file.hy similarity index 100% rename from hy/step6_file.hy rename to impls/hy/step6_file.hy diff --git a/hy/step7_quote.hy b/impls/hy/step7_quote.hy similarity index 100% rename from hy/step7_quote.hy rename to impls/hy/step7_quote.hy diff --git a/hy/step8_macros.hy b/impls/hy/step8_macros.hy similarity index 100% rename from hy/step8_macros.hy rename to impls/hy/step8_macros.hy diff --git a/hy/step9_try.hy b/impls/hy/step9_try.hy similarity index 100% rename from hy/step9_try.hy rename to impls/hy/step9_try.hy diff --git a/hy/stepA_mal.hy b/impls/hy/stepA_mal.hy similarity index 100% rename from hy/stepA_mal.hy rename to impls/hy/stepA_mal.hy diff --git a/hy/tests/step5_tco.mal b/impls/hy/tests/step5_tco.mal similarity index 100% rename from hy/tests/step5_tco.mal rename to impls/hy/tests/step5_tco.mal diff --git a/io/Dockerfile b/impls/io/Dockerfile similarity index 100% rename from io/Dockerfile rename to impls/io/Dockerfile diff --git a/io/Env.io b/impls/io/Env.io similarity index 100% rename from io/Env.io rename to impls/io/Env.io diff --git a/io/Makefile b/impls/io/Makefile similarity index 100% rename from io/Makefile rename to impls/io/Makefile diff --git a/io/MalCore.io b/impls/io/MalCore.io similarity index 100% rename from io/MalCore.io rename to impls/io/MalCore.io diff --git a/io/MalReader.io b/impls/io/MalReader.io similarity index 100% rename from io/MalReader.io rename to impls/io/MalReader.io diff --git a/io/MalReadline.io b/impls/io/MalReadline.io similarity index 100% rename from io/MalReadline.io rename to impls/io/MalReadline.io diff --git a/io/MalTypes.io b/impls/io/MalTypes.io similarity index 100% rename from io/MalTypes.io rename to impls/io/MalTypes.io diff --git a/io/run b/impls/io/run similarity index 100% rename from io/run rename to impls/io/run diff --git a/io/step0_repl.io b/impls/io/step0_repl.io similarity index 100% rename from io/step0_repl.io rename to impls/io/step0_repl.io diff --git a/io/step1_read_print.io b/impls/io/step1_read_print.io similarity index 100% rename from io/step1_read_print.io rename to impls/io/step1_read_print.io diff --git a/io/step2_eval.io b/impls/io/step2_eval.io similarity index 100% rename from io/step2_eval.io rename to impls/io/step2_eval.io diff --git a/io/step3_env.io b/impls/io/step3_env.io similarity index 100% rename from io/step3_env.io rename to impls/io/step3_env.io diff --git a/io/step4_if_fn_do.io b/impls/io/step4_if_fn_do.io similarity index 100% rename from io/step4_if_fn_do.io rename to impls/io/step4_if_fn_do.io diff --git a/io/step5_tco.io b/impls/io/step5_tco.io similarity index 100% rename from io/step5_tco.io rename to impls/io/step5_tco.io diff --git a/io/step6_file.io b/impls/io/step6_file.io similarity index 100% rename from io/step6_file.io rename to impls/io/step6_file.io diff --git a/io/step7_quote.io b/impls/io/step7_quote.io similarity index 100% rename from io/step7_quote.io rename to impls/io/step7_quote.io diff --git a/io/step8_macros.io b/impls/io/step8_macros.io similarity index 100% rename from io/step8_macros.io rename to impls/io/step8_macros.io diff --git a/io/step9_try.io b/impls/io/step9_try.io similarity index 100% rename from io/step9_try.io rename to impls/io/step9_try.io diff --git a/io/stepA_mal.io b/impls/io/stepA_mal.io similarity index 100% rename from io/stepA_mal.io rename to impls/io/stepA_mal.io diff --git a/io/tests/step5_tco.mal b/impls/io/tests/step5_tco.mal similarity index 100% rename from io/tests/step5_tco.mal rename to impls/io/tests/step5_tco.mal diff --git a/io/tests/stepA_mal.mal b/impls/io/tests/stepA_mal.mal similarity index 100% rename from io/tests/stepA_mal.mal rename to impls/io/tests/stepA_mal.mal diff --git a/java/Dockerfile b/impls/java/Dockerfile similarity index 100% rename from java/Dockerfile rename to impls/java/Dockerfile diff --git a/java/Makefile b/impls/java/Makefile similarity index 100% rename from java/Makefile rename to impls/java/Makefile diff --git a/java/pom.xml b/impls/java/pom.xml similarity index 100% rename from java/pom.xml rename to impls/java/pom.xml diff --git a/java/run b/impls/java/run similarity index 100% rename from java/run rename to impls/java/run diff --git a/java/src/main/java/mal/core.java b/impls/java/src/main/java/mal/core.java similarity index 100% rename from java/src/main/java/mal/core.java rename to impls/java/src/main/java/mal/core.java diff --git a/java/src/main/java/mal/env.java b/impls/java/src/main/java/mal/env.java similarity index 100% rename from java/src/main/java/mal/env.java rename to impls/java/src/main/java/mal/env.java diff --git a/java/src/main/java/mal/printer.java b/impls/java/src/main/java/mal/printer.java similarity index 100% rename from java/src/main/java/mal/printer.java rename to impls/java/src/main/java/mal/printer.java diff --git a/java/src/main/java/mal/reader.java b/impls/java/src/main/java/mal/reader.java similarity index 100% rename from java/src/main/java/mal/reader.java rename to impls/java/src/main/java/mal/reader.java diff --git a/java/src/main/java/mal/readline.java b/impls/java/src/main/java/mal/readline.java similarity index 100% rename from java/src/main/java/mal/readline.java rename to impls/java/src/main/java/mal/readline.java diff --git a/java/src/main/java/mal/step0_repl.java b/impls/java/src/main/java/mal/step0_repl.java similarity index 100% rename from java/src/main/java/mal/step0_repl.java rename to impls/java/src/main/java/mal/step0_repl.java diff --git a/java/src/main/java/mal/step1_read_print.java b/impls/java/src/main/java/mal/step1_read_print.java similarity index 100% rename from java/src/main/java/mal/step1_read_print.java rename to impls/java/src/main/java/mal/step1_read_print.java diff --git a/java/src/main/java/mal/step2_eval.java b/impls/java/src/main/java/mal/step2_eval.java similarity index 100% rename from java/src/main/java/mal/step2_eval.java rename to impls/java/src/main/java/mal/step2_eval.java diff --git a/java/src/main/java/mal/step3_env.java b/impls/java/src/main/java/mal/step3_env.java similarity index 100% rename from java/src/main/java/mal/step3_env.java rename to impls/java/src/main/java/mal/step3_env.java diff --git a/java/src/main/java/mal/step4_if_fn_do.java b/impls/java/src/main/java/mal/step4_if_fn_do.java similarity index 100% rename from java/src/main/java/mal/step4_if_fn_do.java rename to impls/java/src/main/java/mal/step4_if_fn_do.java diff --git a/java/src/main/java/mal/step5_tco.java b/impls/java/src/main/java/mal/step5_tco.java similarity index 100% rename from java/src/main/java/mal/step5_tco.java rename to impls/java/src/main/java/mal/step5_tco.java diff --git a/java/src/main/java/mal/step6_file.java b/impls/java/src/main/java/mal/step6_file.java similarity index 100% rename from java/src/main/java/mal/step6_file.java rename to impls/java/src/main/java/mal/step6_file.java diff --git a/java/src/main/java/mal/step7_quote.java b/impls/java/src/main/java/mal/step7_quote.java similarity index 100% rename from java/src/main/java/mal/step7_quote.java rename to impls/java/src/main/java/mal/step7_quote.java diff --git a/java/src/main/java/mal/step8_macros.java b/impls/java/src/main/java/mal/step8_macros.java similarity index 100% rename from java/src/main/java/mal/step8_macros.java rename to impls/java/src/main/java/mal/step8_macros.java diff --git a/java/src/main/java/mal/step9_try.java b/impls/java/src/main/java/mal/step9_try.java similarity index 100% rename from java/src/main/java/mal/step9_try.java rename to impls/java/src/main/java/mal/step9_try.java diff --git a/java/src/main/java/mal/stepA_mal.java b/impls/java/src/main/java/mal/stepA_mal.java similarity index 100% rename from java/src/main/java/mal/stepA_mal.java rename to impls/java/src/main/java/mal/stepA_mal.java diff --git a/java/src/main/java/mal/types.java b/impls/java/src/main/java/mal/types.java similarity index 100% rename from java/src/main/java/mal/types.java rename to impls/java/src/main/java/mal/types.java diff --git a/java/tests/step5_tco.mal b/impls/java/tests/step5_tco.mal similarity index 100% rename from java/tests/step5_tco.mal rename to impls/java/tests/step5_tco.mal diff --git a/jq/Dockerfile b/impls/jq/Dockerfile similarity index 100% rename from jq/Dockerfile rename to impls/jq/Dockerfile diff --git a/jq/Makefile b/impls/jq/Makefile similarity index 100% rename from jq/Makefile rename to impls/jq/Makefile diff --git a/jq/core.jq b/impls/jq/core.jq similarity index 100% rename from jq/core.jq rename to impls/jq/core.jq diff --git a/jq/env.jq b/impls/jq/env.jq similarity index 100% rename from jq/env.jq rename to impls/jq/env.jq diff --git a/jq/interp.jq b/impls/jq/interp.jq similarity index 100% rename from jq/interp.jq rename to impls/jq/interp.jq diff --git a/jq/printer.jq b/impls/jq/printer.jq similarity index 100% rename from jq/printer.jq rename to impls/jq/printer.jq diff --git a/jq/reader.jq b/impls/jq/reader.jq similarity index 100% rename from jq/reader.jq rename to impls/jq/reader.jq diff --git a/jq/rts.py b/impls/jq/rts.py similarity index 100% rename from jq/rts.py rename to impls/jq/rts.py diff --git a/jq/run b/impls/jq/run similarity index 100% rename from jq/run rename to impls/jq/run diff --git a/jq/step0_repl.jq b/impls/jq/step0_repl.jq similarity index 100% rename from jq/step0_repl.jq rename to impls/jq/step0_repl.jq diff --git a/jq/step1_read_print.jq b/impls/jq/step1_read_print.jq similarity index 100% rename from jq/step1_read_print.jq rename to impls/jq/step1_read_print.jq diff --git a/jq/step2_eval.jq b/impls/jq/step2_eval.jq similarity index 100% rename from jq/step2_eval.jq rename to impls/jq/step2_eval.jq diff --git a/jq/step3_env.jq b/impls/jq/step3_env.jq similarity index 100% rename from jq/step3_env.jq rename to impls/jq/step3_env.jq diff --git a/jq/step4_if_fn_do.jq b/impls/jq/step4_if_fn_do.jq similarity index 100% rename from jq/step4_if_fn_do.jq rename to impls/jq/step4_if_fn_do.jq diff --git a/jq/step5_tco.jq b/impls/jq/step5_tco.jq similarity index 100% rename from jq/step5_tco.jq rename to impls/jq/step5_tco.jq diff --git a/jq/step6_file.jq b/impls/jq/step6_file.jq similarity index 100% rename from jq/step6_file.jq rename to impls/jq/step6_file.jq diff --git a/jq/step7_quote.jq b/impls/jq/step7_quote.jq similarity index 100% rename from jq/step7_quote.jq rename to impls/jq/step7_quote.jq diff --git a/jq/step8_macros.jq b/impls/jq/step8_macros.jq similarity index 100% rename from jq/step8_macros.jq rename to impls/jq/step8_macros.jq diff --git a/jq/step9_try.jq b/impls/jq/step9_try.jq similarity index 100% rename from jq/step9_try.jq rename to impls/jq/step9_try.jq diff --git a/jq/stepA_mal.jq b/impls/jq/stepA_mal.jq similarity index 100% rename from jq/stepA_mal.jq rename to impls/jq/stepA_mal.jq diff --git a/jq/utils.jq b/impls/jq/utils.jq similarity index 100% rename from jq/utils.jq rename to impls/jq/utils.jq diff --git a/js/Dockerfile b/impls/js/Dockerfile similarity index 100% rename from js/Dockerfile rename to impls/js/Dockerfile diff --git a/js/Makefile b/impls/js/Makefile similarity index 100% rename from js/Makefile rename to impls/js/Makefile diff --git a/js/core.js b/impls/js/core.js similarity index 100% rename from js/core.js rename to impls/js/core.js diff --git a/js/env.js b/impls/js/env.js similarity index 100% rename from js/env.js rename to impls/js/env.js diff --git a/js/interop.js b/impls/js/interop.js similarity index 100% rename from js/interop.js rename to impls/js/interop.js diff --git a/js/jq_readline.js b/impls/js/jq_readline.js similarity index 100% rename from js/jq_readline.js rename to impls/js/jq_readline.js diff --git a/js/node_readline.js b/impls/js/node_readline.js similarity index 100% rename from js/node_readline.js rename to impls/js/node_readline.js diff --git a/js/package.json b/impls/js/package.json similarity index 100% rename from js/package.json rename to impls/js/package.json diff --git a/js/printer.js b/impls/js/printer.js similarity index 100% rename from js/printer.js rename to impls/js/printer.js diff --git a/js/reader.js b/impls/js/reader.js similarity index 100% rename from js/reader.js rename to impls/js/reader.js diff --git a/js/run b/impls/js/run similarity index 100% rename from js/run rename to impls/js/run diff --git a/js/step0_repl.js b/impls/js/step0_repl.js similarity index 100% rename from js/step0_repl.js rename to impls/js/step0_repl.js diff --git a/js/step1_read_print.js b/impls/js/step1_read_print.js similarity index 100% rename from js/step1_read_print.js rename to impls/js/step1_read_print.js diff --git a/js/step2_eval.js b/impls/js/step2_eval.js similarity index 100% rename from js/step2_eval.js rename to impls/js/step2_eval.js diff --git a/js/step3_env.js b/impls/js/step3_env.js similarity index 100% rename from js/step3_env.js rename to impls/js/step3_env.js diff --git a/js/step4_if_fn_do.js b/impls/js/step4_if_fn_do.js similarity index 100% rename from js/step4_if_fn_do.js rename to impls/js/step4_if_fn_do.js diff --git a/js/step5_tco.js b/impls/js/step5_tco.js similarity index 100% rename from js/step5_tco.js rename to impls/js/step5_tco.js diff --git a/js/step6_file.js b/impls/js/step6_file.js similarity index 100% rename from js/step6_file.js rename to impls/js/step6_file.js diff --git a/js/step7_quote.js b/impls/js/step7_quote.js similarity index 100% rename from js/step7_quote.js rename to impls/js/step7_quote.js diff --git a/js/step8_macros.js b/impls/js/step8_macros.js similarity index 100% rename from js/step8_macros.js rename to impls/js/step8_macros.js diff --git a/js/step9_try.js b/impls/js/step9_try.js similarity index 100% rename from js/step9_try.js rename to impls/js/step9_try.js diff --git a/js/stepA_mal.js b/impls/js/stepA_mal.js similarity index 100% rename from js/stepA_mal.js rename to impls/js/stepA_mal.js diff --git a/js/tests/common.js b/impls/js/tests/common.js similarity index 100% rename from js/tests/common.js rename to impls/js/tests/common.js diff --git a/js/tests/node_modules b/impls/js/tests/node_modules similarity index 100% rename from js/tests/node_modules rename to impls/js/tests/node_modules diff --git a/js/tests/reader.js b/impls/js/tests/reader.js similarity index 100% rename from js/tests/reader.js rename to impls/js/tests/reader.js diff --git a/js/tests/step5_tco.mal b/impls/js/tests/step5_tco.mal similarity index 100% rename from js/tests/step5_tco.mal rename to impls/js/tests/step5_tco.mal diff --git a/js/tests/stepA_mal.mal b/impls/js/tests/stepA_mal.mal similarity index 100% rename from js/tests/stepA_mal.mal rename to impls/js/tests/stepA_mal.mal diff --git a/js/tests/types.js b/impls/js/tests/types.js similarity index 100% rename from js/tests/types.js rename to impls/js/tests/types.js diff --git a/js/types.js b/impls/js/types.js similarity index 100% rename from js/types.js rename to impls/js/types.js diff --git a/js/web b/impls/js/web similarity index 100% rename from js/web rename to impls/js/web diff --git a/julia/Dockerfile b/impls/julia/Dockerfile similarity index 100% rename from julia/Dockerfile rename to impls/julia/Dockerfile diff --git a/julia/Makefile b/impls/julia/Makefile similarity index 100% rename from julia/Makefile rename to impls/julia/Makefile diff --git a/julia/core.jl b/impls/julia/core.jl similarity index 100% rename from julia/core.jl rename to impls/julia/core.jl diff --git a/julia/env.jl b/impls/julia/env.jl similarity index 100% rename from julia/env.jl rename to impls/julia/env.jl diff --git a/julia/printer.jl b/impls/julia/printer.jl similarity index 100% rename from julia/printer.jl rename to impls/julia/printer.jl diff --git a/julia/reader.jl b/impls/julia/reader.jl similarity index 100% rename from julia/reader.jl rename to impls/julia/reader.jl diff --git a/julia/readline_mod.jl b/impls/julia/readline_mod.jl similarity index 100% rename from julia/readline_mod.jl rename to impls/julia/readline_mod.jl diff --git a/julia/run b/impls/julia/run similarity index 100% rename from julia/run rename to impls/julia/run diff --git a/julia/step0_repl.jl b/impls/julia/step0_repl.jl similarity index 100% rename from julia/step0_repl.jl rename to impls/julia/step0_repl.jl diff --git a/julia/step1_read_print.jl b/impls/julia/step1_read_print.jl similarity index 100% rename from julia/step1_read_print.jl rename to impls/julia/step1_read_print.jl diff --git a/julia/step2_eval.jl b/impls/julia/step2_eval.jl similarity index 100% rename from julia/step2_eval.jl rename to impls/julia/step2_eval.jl diff --git a/julia/step3_env.jl b/impls/julia/step3_env.jl similarity index 100% rename from julia/step3_env.jl rename to impls/julia/step3_env.jl diff --git a/julia/step4_if_fn_do.jl b/impls/julia/step4_if_fn_do.jl similarity index 100% rename from julia/step4_if_fn_do.jl rename to impls/julia/step4_if_fn_do.jl diff --git a/julia/step5_tco.jl b/impls/julia/step5_tco.jl similarity index 100% rename from julia/step5_tco.jl rename to impls/julia/step5_tco.jl diff --git a/julia/step6_file.jl b/impls/julia/step6_file.jl similarity index 100% rename from julia/step6_file.jl rename to impls/julia/step6_file.jl diff --git a/julia/step7_quote.jl b/impls/julia/step7_quote.jl similarity index 100% rename from julia/step7_quote.jl rename to impls/julia/step7_quote.jl diff --git a/julia/step8_macros.jl b/impls/julia/step8_macros.jl similarity index 100% rename from julia/step8_macros.jl rename to impls/julia/step8_macros.jl diff --git a/julia/step9_try.jl b/impls/julia/step9_try.jl similarity index 100% rename from julia/step9_try.jl rename to impls/julia/step9_try.jl diff --git a/julia/stepA_mal.jl b/impls/julia/stepA_mal.jl similarity index 100% rename from julia/stepA_mal.jl rename to impls/julia/stepA_mal.jl diff --git a/julia/tests/step5_tco.mal b/impls/julia/tests/step5_tco.mal similarity index 100% rename from julia/tests/step5_tco.mal rename to impls/julia/tests/step5_tco.mal diff --git a/julia/types.jl b/impls/julia/types.jl similarity index 100% rename from julia/types.jl rename to impls/julia/types.jl diff --git a/kotlin/Dockerfile b/impls/kotlin/Dockerfile similarity index 100% rename from kotlin/Dockerfile rename to impls/kotlin/Dockerfile diff --git a/kotlin/Makefile b/impls/kotlin/Makefile similarity index 100% rename from kotlin/Makefile rename to impls/kotlin/Makefile diff --git a/kotlin/run b/impls/kotlin/run similarity index 100% rename from kotlin/run rename to impls/kotlin/run diff --git a/kotlin/src/mal/core.kt b/impls/kotlin/src/mal/core.kt similarity index 100% rename from kotlin/src/mal/core.kt rename to impls/kotlin/src/mal/core.kt diff --git a/kotlin/src/mal/env.kt b/impls/kotlin/src/mal/env.kt similarity index 100% rename from kotlin/src/mal/env.kt rename to impls/kotlin/src/mal/env.kt diff --git a/kotlin/src/mal/printer.kt b/impls/kotlin/src/mal/printer.kt similarity index 100% rename from kotlin/src/mal/printer.kt rename to impls/kotlin/src/mal/printer.kt diff --git a/kotlin/src/mal/reader.kt b/impls/kotlin/src/mal/reader.kt similarity index 100% rename from kotlin/src/mal/reader.kt rename to impls/kotlin/src/mal/reader.kt diff --git a/kotlin/src/mal/readline.kt b/impls/kotlin/src/mal/readline.kt similarity index 100% rename from kotlin/src/mal/readline.kt rename to impls/kotlin/src/mal/readline.kt diff --git a/kotlin/src/mal/step0_repl.kt b/impls/kotlin/src/mal/step0_repl.kt similarity index 100% rename from kotlin/src/mal/step0_repl.kt rename to impls/kotlin/src/mal/step0_repl.kt diff --git a/kotlin/src/mal/step1_read_print.kt b/impls/kotlin/src/mal/step1_read_print.kt similarity index 100% rename from kotlin/src/mal/step1_read_print.kt rename to impls/kotlin/src/mal/step1_read_print.kt diff --git a/kotlin/src/mal/step2_eval.kt b/impls/kotlin/src/mal/step2_eval.kt similarity index 100% rename from kotlin/src/mal/step2_eval.kt rename to impls/kotlin/src/mal/step2_eval.kt diff --git a/kotlin/src/mal/step3_env.kt b/impls/kotlin/src/mal/step3_env.kt similarity index 100% rename from kotlin/src/mal/step3_env.kt rename to impls/kotlin/src/mal/step3_env.kt diff --git a/kotlin/src/mal/step4_if_fn_do.kt b/impls/kotlin/src/mal/step4_if_fn_do.kt similarity index 100% rename from kotlin/src/mal/step4_if_fn_do.kt rename to impls/kotlin/src/mal/step4_if_fn_do.kt diff --git a/kotlin/src/mal/step5_tco.kt b/impls/kotlin/src/mal/step5_tco.kt similarity index 100% rename from kotlin/src/mal/step5_tco.kt rename to impls/kotlin/src/mal/step5_tco.kt diff --git a/kotlin/src/mal/step6_file.kt b/impls/kotlin/src/mal/step6_file.kt similarity index 100% rename from kotlin/src/mal/step6_file.kt rename to impls/kotlin/src/mal/step6_file.kt diff --git a/kotlin/src/mal/step7_quote.kt b/impls/kotlin/src/mal/step7_quote.kt similarity index 100% rename from kotlin/src/mal/step7_quote.kt rename to impls/kotlin/src/mal/step7_quote.kt diff --git a/kotlin/src/mal/step8_macros.kt b/impls/kotlin/src/mal/step8_macros.kt similarity index 100% rename from kotlin/src/mal/step8_macros.kt rename to impls/kotlin/src/mal/step8_macros.kt diff --git a/kotlin/src/mal/step9_try.kt b/impls/kotlin/src/mal/step9_try.kt similarity index 100% rename from kotlin/src/mal/step9_try.kt rename to impls/kotlin/src/mal/step9_try.kt diff --git a/kotlin/src/mal/stepA_mal.kt b/impls/kotlin/src/mal/stepA_mal.kt similarity index 100% rename from kotlin/src/mal/stepA_mal.kt rename to impls/kotlin/src/mal/stepA_mal.kt diff --git a/kotlin/src/mal/types.kt b/impls/kotlin/src/mal/types.kt similarity index 100% rename from kotlin/src/mal/types.kt rename to impls/kotlin/src/mal/types.kt diff --git a/kotlin/tests/step5_tco.mal b/impls/kotlin/tests/step5_tco.mal similarity index 100% rename from kotlin/tests/step5_tco.mal rename to impls/kotlin/tests/step5_tco.mal diff --git a/lib/README.md b/impls/lib/README.md similarity index 100% rename from lib/README.md rename to impls/lib/README.md diff --git a/lib/alias-hacks.mal b/impls/lib/alias-hacks.mal similarity index 100% rename from lib/alias-hacks.mal rename to impls/lib/alias-hacks.mal diff --git a/lib/equality.mal b/impls/lib/equality.mal similarity index 100% rename from lib/equality.mal rename to impls/lib/equality.mal diff --git a/lib/load-file-once.mal b/impls/lib/load-file-once.mal similarity index 100% rename from lib/load-file-once.mal rename to impls/lib/load-file-once.mal diff --git a/lib/memoize.mal b/impls/lib/memoize.mal similarity index 100% rename from lib/memoize.mal rename to impls/lib/memoize.mal diff --git a/lib/perf.mal b/impls/lib/perf.mal similarity index 100% rename from lib/perf.mal rename to impls/lib/perf.mal diff --git a/lib/pprint.mal b/impls/lib/pprint.mal similarity index 100% rename from lib/pprint.mal rename to impls/lib/pprint.mal diff --git a/lib/protocols.mal b/impls/lib/protocols.mal similarity index 100% rename from lib/protocols.mal rename to impls/lib/protocols.mal diff --git a/lib/reducers.mal b/impls/lib/reducers.mal similarity index 100% rename from lib/reducers.mal rename to impls/lib/reducers.mal diff --git a/lib/test_cascade.mal b/impls/lib/test_cascade.mal similarity index 100% rename from lib/test_cascade.mal rename to impls/lib/test_cascade.mal diff --git a/lib/threading.mal b/impls/lib/threading.mal similarity index 100% rename from lib/threading.mal rename to impls/lib/threading.mal diff --git a/lib/trivial.mal b/impls/lib/trivial.mal similarity index 100% rename from lib/trivial.mal rename to impls/lib/trivial.mal diff --git a/livescript/Dockerfile b/impls/livescript/Dockerfile similarity index 100% rename from livescript/Dockerfile rename to impls/livescript/Dockerfile diff --git a/livescript/Makefile b/impls/livescript/Makefile similarity index 100% rename from livescript/Makefile rename to impls/livescript/Makefile diff --git a/livescript/core.ls b/impls/livescript/core.ls similarity index 100% rename from livescript/core.ls rename to impls/livescript/core.ls diff --git a/livescript/env.ls b/impls/livescript/env.ls similarity index 100% rename from livescript/env.ls rename to impls/livescript/env.ls diff --git a/livescript/error.ls b/impls/livescript/error.ls similarity index 100% rename from livescript/error.ls rename to impls/livescript/error.ls diff --git a/livescript/node_readline.js b/impls/livescript/node_readline.js similarity index 100% rename from livescript/node_readline.js rename to impls/livescript/node_readline.js diff --git a/livescript/package.json b/impls/livescript/package.json similarity index 100% rename from livescript/package.json rename to impls/livescript/package.json diff --git a/livescript/printer.ls b/impls/livescript/printer.ls similarity index 100% rename from livescript/printer.ls rename to impls/livescript/printer.ls diff --git a/livescript/reader.ls b/impls/livescript/reader.ls similarity index 100% rename from livescript/reader.ls rename to impls/livescript/reader.ls diff --git a/livescript/run b/impls/livescript/run similarity index 100% rename from livescript/run rename to impls/livescript/run diff --git a/livescript/step0_repl.ls b/impls/livescript/step0_repl.ls similarity index 100% rename from livescript/step0_repl.ls rename to impls/livescript/step0_repl.ls diff --git a/livescript/step1_read_print.ls b/impls/livescript/step1_read_print.ls similarity index 100% rename from livescript/step1_read_print.ls rename to impls/livescript/step1_read_print.ls diff --git a/livescript/step2_eval.ls b/impls/livescript/step2_eval.ls similarity index 100% rename from livescript/step2_eval.ls rename to impls/livescript/step2_eval.ls diff --git a/livescript/step3_env.ls b/impls/livescript/step3_env.ls similarity index 100% rename from livescript/step3_env.ls rename to impls/livescript/step3_env.ls diff --git a/livescript/step4_if_fn_do.ls b/impls/livescript/step4_if_fn_do.ls similarity index 100% rename from livescript/step4_if_fn_do.ls rename to impls/livescript/step4_if_fn_do.ls diff --git a/livescript/step5_tco.ls b/impls/livescript/step5_tco.ls similarity index 100% rename from livescript/step5_tco.ls rename to impls/livescript/step5_tco.ls diff --git a/livescript/step6_file.ls b/impls/livescript/step6_file.ls similarity index 100% rename from livescript/step6_file.ls rename to impls/livescript/step6_file.ls diff --git a/livescript/step7_quote.ls b/impls/livescript/step7_quote.ls similarity index 100% rename from livescript/step7_quote.ls rename to impls/livescript/step7_quote.ls diff --git a/livescript/step8_macros.ls b/impls/livescript/step8_macros.ls similarity index 100% rename from livescript/step8_macros.ls rename to impls/livescript/step8_macros.ls diff --git a/livescript/step9_try.ls b/impls/livescript/step9_try.ls similarity index 100% rename from livescript/step9_try.ls rename to impls/livescript/step9_try.ls diff --git a/livescript/stepA_mal.ls b/impls/livescript/stepA_mal.ls similarity index 100% rename from livescript/stepA_mal.ls rename to impls/livescript/stepA_mal.ls diff --git a/livescript/utils.ls b/impls/livescript/utils.ls similarity index 100% rename from livescript/utils.ls rename to impls/livescript/utils.ls diff --git a/logo/Dockerfile b/impls/logo/Dockerfile similarity index 100% rename from logo/Dockerfile rename to impls/logo/Dockerfile diff --git a/logo/Makefile b/impls/logo/Makefile similarity index 100% rename from logo/Makefile rename to impls/logo/Makefile diff --git a/logo/core.lg b/impls/logo/core.lg similarity index 100% rename from logo/core.lg rename to impls/logo/core.lg diff --git a/logo/env.lg b/impls/logo/env.lg similarity index 100% rename from logo/env.lg rename to impls/logo/env.lg diff --git a/logo/examples/tree.mal b/impls/logo/examples/tree.mal similarity index 100% rename from logo/examples/tree.mal rename to impls/logo/examples/tree.mal diff --git a/logo/printer.lg b/impls/logo/printer.lg similarity index 100% rename from logo/printer.lg rename to impls/logo/printer.lg diff --git a/logo/reader.lg b/impls/logo/reader.lg similarity index 100% rename from logo/reader.lg rename to impls/logo/reader.lg diff --git a/logo/readline.lg b/impls/logo/readline.lg similarity index 100% rename from logo/readline.lg rename to impls/logo/readline.lg diff --git a/logo/run b/impls/logo/run similarity index 100% rename from logo/run rename to impls/logo/run diff --git a/logo/step0_repl.lg b/impls/logo/step0_repl.lg similarity index 100% rename from logo/step0_repl.lg rename to impls/logo/step0_repl.lg diff --git a/logo/step1_read_print.lg b/impls/logo/step1_read_print.lg similarity index 100% rename from logo/step1_read_print.lg rename to impls/logo/step1_read_print.lg diff --git a/logo/step2_eval.lg b/impls/logo/step2_eval.lg similarity index 100% rename from logo/step2_eval.lg rename to impls/logo/step2_eval.lg diff --git a/logo/step3_env.lg b/impls/logo/step3_env.lg similarity index 100% rename from logo/step3_env.lg rename to impls/logo/step3_env.lg diff --git a/logo/step4_if_fn_do.lg b/impls/logo/step4_if_fn_do.lg similarity index 100% rename from logo/step4_if_fn_do.lg rename to impls/logo/step4_if_fn_do.lg diff --git a/logo/step5_tco.lg b/impls/logo/step5_tco.lg similarity index 100% rename from logo/step5_tco.lg rename to impls/logo/step5_tco.lg diff --git a/logo/step6_file.lg b/impls/logo/step6_file.lg similarity index 100% rename from logo/step6_file.lg rename to impls/logo/step6_file.lg diff --git a/logo/step7_quote.lg b/impls/logo/step7_quote.lg similarity index 100% rename from logo/step7_quote.lg rename to impls/logo/step7_quote.lg diff --git a/logo/step8_macros.lg b/impls/logo/step8_macros.lg similarity index 100% rename from logo/step8_macros.lg rename to impls/logo/step8_macros.lg diff --git a/logo/step9_try.lg b/impls/logo/step9_try.lg similarity index 100% rename from logo/step9_try.lg rename to impls/logo/step9_try.lg diff --git a/logo/stepA_mal.lg b/impls/logo/stepA_mal.lg similarity index 100% rename from logo/stepA_mal.lg rename to impls/logo/stepA_mal.lg diff --git a/logo/tests/stepA_mal.mal b/impls/logo/tests/stepA_mal.mal similarity index 100% rename from logo/tests/stepA_mal.mal rename to impls/logo/tests/stepA_mal.mal diff --git a/logo/types.lg b/impls/logo/types.lg similarity index 100% rename from logo/types.lg rename to impls/logo/types.lg diff --git a/lua/Dockerfile b/impls/lua/Dockerfile similarity index 100% rename from lua/Dockerfile rename to impls/lua/Dockerfile diff --git a/lua/Makefile b/impls/lua/Makefile similarity index 100% rename from lua/Makefile rename to impls/lua/Makefile diff --git a/lua/core.lua b/impls/lua/core.lua similarity index 100% rename from lua/core.lua rename to impls/lua/core.lua diff --git a/lua/env.lua b/impls/lua/env.lua similarity index 100% rename from lua/env.lua rename to impls/lua/env.lua diff --git a/lua/printer.lua b/impls/lua/printer.lua similarity index 100% rename from lua/printer.lua rename to impls/lua/printer.lua diff --git a/lua/reader.lua b/impls/lua/reader.lua similarity index 100% rename from lua/reader.lua rename to impls/lua/reader.lua diff --git a/lua/readline.lua b/impls/lua/readline.lua similarity index 100% rename from lua/readline.lua rename to impls/lua/readline.lua diff --git a/lua/run b/impls/lua/run similarity index 100% rename from lua/run rename to impls/lua/run diff --git a/lua/step0_repl.lua b/impls/lua/step0_repl.lua similarity index 100% rename from lua/step0_repl.lua rename to impls/lua/step0_repl.lua diff --git a/lua/step1_read_print.lua b/impls/lua/step1_read_print.lua similarity index 100% rename from lua/step1_read_print.lua rename to impls/lua/step1_read_print.lua diff --git a/lua/step2_eval.lua b/impls/lua/step2_eval.lua similarity index 100% rename from lua/step2_eval.lua rename to impls/lua/step2_eval.lua diff --git a/lua/step3_env.lua b/impls/lua/step3_env.lua similarity index 100% rename from lua/step3_env.lua rename to impls/lua/step3_env.lua diff --git a/lua/step4_if_fn_do.lua b/impls/lua/step4_if_fn_do.lua similarity index 100% rename from lua/step4_if_fn_do.lua rename to impls/lua/step4_if_fn_do.lua diff --git a/lua/step5_tco.lua b/impls/lua/step5_tco.lua similarity index 100% rename from lua/step5_tco.lua rename to impls/lua/step5_tco.lua diff --git a/lua/step6_file.lua b/impls/lua/step6_file.lua similarity index 100% rename from lua/step6_file.lua rename to impls/lua/step6_file.lua diff --git a/lua/step7_quote.lua b/impls/lua/step7_quote.lua similarity index 100% rename from lua/step7_quote.lua rename to impls/lua/step7_quote.lua diff --git a/lua/step8_macros.lua b/impls/lua/step8_macros.lua similarity index 100% rename from lua/step8_macros.lua rename to impls/lua/step8_macros.lua diff --git a/lua/step9_try.lua b/impls/lua/step9_try.lua similarity index 100% rename from lua/step9_try.lua rename to impls/lua/step9_try.lua diff --git a/lua/stepA_mal.lua b/impls/lua/stepA_mal.lua similarity index 100% rename from lua/stepA_mal.lua rename to impls/lua/stepA_mal.lua diff --git a/lua/tests/step5_tco.mal b/impls/lua/tests/step5_tco.mal similarity index 100% rename from lua/tests/step5_tco.mal rename to impls/lua/tests/step5_tco.mal diff --git a/lua/tests/stepA_mal.mal b/impls/lua/tests/stepA_mal.mal similarity index 100% rename from lua/tests/stepA_mal.mal rename to impls/lua/tests/stepA_mal.mal diff --git a/lua/types.lua b/impls/lua/types.lua similarity index 100% rename from lua/types.lua rename to impls/lua/types.lua diff --git a/lua/utils.lua b/impls/lua/utils.lua similarity index 100% rename from lua/utils.lua rename to impls/lua/utils.lua diff --git a/make/Dockerfile b/impls/make/Dockerfile similarity index 100% rename from make/Dockerfile rename to impls/make/Dockerfile diff --git a/make/Makefile b/impls/make/Makefile similarity index 100% rename from make/Makefile rename to impls/make/Makefile diff --git a/make/core.mk b/impls/make/core.mk similarity index 100% rename from make/core.mk rename to impls/make/core.mk diff --git a/make/env.mk b/impls/make/env.mk similarity index 100% rename from make/env.mk rename to impls/make/env.mk diff --git a/make/gmsl.mk b/impls/make/gmsl.mk similarity index 100% rename from make/gmsl.mk rename to impls/make/gmsl.mk diff --git a/make/numbers.mk b/impls/make/numbers.mk similarity index 100% rename from make/numbers.mk rename to impls/make/numbers.mk diff --git a/make/printer.mk b/impls/make/printer.mk similarity index 100% rename from make/printer.mk rename to impls/make/printer.mk diff --git a/make/reader.mk b/impls/make/reader.mk similarity index 100% rename from make/reader.mk rename to impls/make/reader.mk diff --git a/make/readline.mk b/impls/make/readline.mk similarity index 100% rename from make/readline.mk rename to impls/make/readline.mk diff --git a/make/rules.mk b/impls/make/rules.mk similarity index 100% rename from make/rules.mk rename to impls/make/rules.mk diff --git a/make/run b/impls/make/run similarity index 100% rename from make/run rename to impls/make/run diff --git a/make/step0_repl.mk b/impls/make/step0_repl.mk similarity index 100% rename from make/step0_repl.mk rename to impls/make/step0_repl.mk diff --git a/make/step1_read_print.mk b/impls/make/step1_read_print.mk similarity index 100% rename from make/step1_read_print.mk rename to impls/make/step1_read_print.mk diff --git a/make/step2_eval.mk b/impls/make/step2_eval.mk similarity index 100% rename from make/step2_eval.mk rename to impls/make/step2_eval.mk diff --git a/make/step3_env.mk b/impls/make/step3_env.mk similarity index 100% rename from make/step3_env.mk rename to impls/make/step3_env.mk diff --git a/make/step4_if_fn_do.mk b/impls/make/step4_if_fn_do.mk similarity index 100% rename from make/step4_if_fn_do.mk rename to impls/make/step4_if_fn_do.mk diff --git a/make/step6_file.mk b/impls/make/step6_file.mk similarity index 100% rename from make/step6_file.mk rename to impls/make/step6_file.mk diff --git a/make/step7_quote.mk b/impls/make/step7_quote.mk similarity index 100% rename from make/step7_quote.mk rename to impls/make/step7_quote.mk diff --git a/make/step8_macros.mk b/impls/make/step8_macros.mk similarity index 100% rename from make/step8_macros.mk rename to impls/make/step8_macros.mk diff --git a/make/step9_try.mk b/impls/make/step9_try.mk similarity index 100% rename from make/step9_try.mk rename to impls/make/step9_try.mk diff --git a/make/stepA_mal.mk b/impls/make/stepA_mal.mk similarity index 100% rename from make/stepA_mal.mk rename to impls/make/stepA_mal.mk diff --git a/make/tests/stepA_mal.mal b/impls/make/tests/stepA_mal.mal similarity index 100% rename from make/tests/stepA_mal.mal rename to impls/make/tests/stepA_mal.mal diff --git a/make/types.mk b/impls/make/types.mk similarity index 100% rename from make/types.mk rename to impls/make/types.mk diff --git a/make/util.mk b/impls/make/util.mk similarity index 100% rename from make/util.mk rename to impls/make/util.mk diff --git a/mal/Dockerfile b/impls/mal/Dockerfile similarity index 100% rename from mal/Dockerfile rename to impls/mal/Dockerfile diff --git a/mal/Makefile b/impls/mal/Makefile similarity index 100% rename from mal/Makefile rename to impls/mal/Makefile diff --git a/mal/core.mal b/impls/mal/core.mal similarity index 100% rename from mal/core.mal rename to impls/mal/core.mal diff --git a/mal/env.mal b/impls/mal/env.mal similarity index 100% rename from mal/env.mal rename to impls/mal/env.mal diff --git a/mal/run b/impls/mal/run similarity index 100% rename from mal/run rename to impls/mal/run diff --git a/mal/step0_repl.mal b/impls/mal/step0_repl.mal similarity index 100% rename from mal/step0_repl.mal rename to impls/mal/step0_repl.mal diff --git a/mal/step1_read_print.mal b/impls/mal/step1_read_print.mal similarity index 100% rename from mal/step1_read_print.mal rename to impls/mal/step1_read_print.mal diff --git a/mal/step2_eval.mal b/impls/mal/step2_eval.mal similarity index 100% rename from mal/step2_eval.mal rename to impls/mal/step2_eval.mal diff --git a/mal/step3_env.mal b/impls/mal/step3_env.mal similarity index 100% rename from mal/step3_env.mal rename to impls/mal/step3_env.mal diff --git a/mal/step4_if_fn_do.mal b/impls/mal/step4_if_fn_do.mal similarity index 100% rename from mal/step4_if_fn_do.mal rename to impls/mal/step4_if_fn_do.mal diff --git a/mal/step6_file.mal b/impls/mal/step6_file.mal similarity index 100% rename from mal/step6_file.mal rename to impls/mal/step6_file.mal diff --git a/mal/step7_quote.mal b/impls/mal/step7_quote.mal similarity index 100% rename from mal/step7_quote.mal rename to impls/mal/step7_quote.mal diff --git a/mal/step8_macros.mal b/impls/mal/step8_macros.mal similarity index 100% rename from mal/step8_macros.mal rename to impls/mal/step8_macros.mal diff --git a/mal/step9_try.mal b/impls/mal/step9_try.mal similarity index 100% rename from mal/step9_try.mal rename to impls/mal/step9_try.mal diff --git a/mal/stepA_mal.mal b/impls/mal/stepA_mal.mal similarity index 100% rename from mal/stepA_mal.mal rename to impls/mal/stepA_mal.mal diff --git a/matlab/+types/Atom.m b/impls/matlab/+types/Atom.m similarity index 100% rename from matlab/+types/Atom.m rename to impls/matlab/+types/Atom.m diff --git a/matlab/+types/Function.m b/impls/matlab/+types/Function.m similarity index 100% rename from matlab/+types/Function.m rename to impls/matlab/+types/Function.m diff --git a/matlab/+types/HashMap.m b/impls/matlab/+types/HashMap.m similarity index 100% rename from matlab/+types/HashMap.m rename to impls/matlab/+types/HashMap.m diff --git a/matlab/+types/List.m b/impls/matlab/+types/List.m similarity index 100% rename from matlab/+types/List.m rename to impls/matlab/+types/List.m diff --git a/matlab/+types/MalException.m b/impls/matlab/+types/MalException.m similarity index 100% rename from matlab/+types/MalException.m rename to impls/matlab/+types/MalException.m diff --git a/matlab/+types/Nil.m b/impls/matlab/+types/Nil.m similarity index 100% rename from matlab/+types/Nil.m rename to impls/matlab/+types/Nil.m diff --git a/matlab/+types/Reader.m b/impls/matlab/+types/Reader.m similarity index 100% rename from matlab/+types/Reader.m rename to impls/matlab/+types/Reader.m diff --git a/matlab/+types/Symbol.m b/impls/matlab/+types/Symbol.m similarity index 100% rename from matlab/+types/Symbol.m rename to impls/matlab/+types/Symbol.m diff --git a/matlab/+types/Vector.m b/impls/matlab/+types/Vector.m similarity index 100% rename from matlab/+types/Vector.m rename to impls/matlab/+types/Vector.m diff --git a/matlab/.dockerignore b/impls/matlab/.dockerignore similarity index 100% rename from matlab/.dockerignore rename to impls/matlab/.dockerignore diff --git a/matlab/Dict.m b/impls/matlab/Dict.m similarity index 100% rename from matlab/Dict.m rename to impls/matlab/Dict.m diff --git a/matlab/Dockerfile b/impls/matlab/Dockerfile similarity index 100% rename from matlab/Dockerfile rename to impls/matlab/Dockerfile diff --git a/matlab/Env.m b/impls/matlab/Env.m similarity index 100% rename from matlab/Env.m rename to impls/matlab/Env.m diff --git a/matlab/Makefile b/impls/matlab/Makefile similarity index 100% rename from matlab/Makefile rename to impls/matlab/Makefile diff --git a/matlab/core.m b/impls/matlab/core.m similarity index 100% rename from matlab/core.m rename to impls/matlab/core.m diff --git a/matlab/printer.m b/impls/matlab/printer.m similarity index 100% rename from matlab/printer.m rename to impls/matlab/printer.m diff --git a/matlab/reader.m b/impls/matlab/reader.m similarity index 100% rename from matlab/reader.m rename to impls/matlab/reader.m diff --git a/matlab/run b/impls/matlab/run similarity index 100% rename from matlab/run rename to impls/matlab/run diff --git a/matlab/step0_repl.m b/impls/matlab/step0_repl.m similarity index 100% rename from matlab/step0_repl.m rename to impls/matlab/step0_repl.m diff --git a/matlab/step1_read_print.m b/impls/matlab/step1_read_print.m similarity index 100% rename from matlab/step1_read_print.m rename to impls/matlab/step1_read_print.m diff --git a/matlab/step2_eval.m b/impls/matlab/step2_eval.m similarity index 100% rename from matlab/step2_eval.m rename to impls/matlab/step2_eval.m diff --git a/matlab/step3_env.m b/impls/matlab/step3_env.m similarity index 100% rename from matlab/step3_env.m rename to impls/matlab/step3_env.m diff --git a/matlab/step4_if_fn_do.m b/impls/matlab/step4_if_fn_do.m similarity index 100% rename from matlab/step4_if_fn_do.m rename to impls/matlab/step4_if_fn_do.m diff --git a/matlab/step5_tco.m b/impls/matlab/step5_tco.m similarity index 100% rename from matlab/step5_tco.m rename to impls/matlab/step5_tco.m diff --git a/matlab/step6_file.m b/impls/matlab/step6_file.m similarity index 100% rename from matlab/step6_file.m rename to impls/matlab/step6_file.m diff --git a/matlab/step7_quote.m b/impls/matlab/step7_quote.m similarity index 100% rename from matlab/step7_quote.m rename to impls/matlab/step7_quote.m diff --git a/matlab/step8_macros.m b/impls/matlab/step8_macros.m similarity index 100% rename from matlab/step8_macros.m rename to impls/matlab/step8_macros.m diff --git a/matlab/step9_try.m b/impls/matlab/step9_try.m similarity index 100% rename from matlab/step9_try.m rename to impls/matlab/step9_try.m diff --git a/matlab/stepA_mal.m b/impls/matlab/stepA_mal.m similarity index 100% rename from matlab/stepA_mal.m rename to impls/matlab/stepA_mal.m diff --git a/matlab/type_utils.m b/impls/matlab/type_utils.m similarity index 100% rename from matlab/type_utils.m rename to impls/matlab/type_utils.m diff --git a/matlab/types b/impls/matlab/types similarity index 100% rename from matlab/types rename to impls/matlab/types diff --git a/miniMAL/Dockerfile b/impls/miniMAL/Dockerfile similarity index 100% rename from miniMAL/Dockerfile rename to impls/miniMAL/Dockerfile diff --git a/miniMAL/Makefile b/impls/miniMAL/Makefile similarity index 100% rename from miniMAL/Makefile rename to impls/miniMAL/Makefile diff --git a/miniMAL/core.json b/impls/miniMAL/core.json similarity index 100% rename from miniMAL/core.json rename to impls/miniMAL/core.json diff --git a/miniMAL/env.json b/impls/miniMAL/env.json similarity index 100% rename from miniMAL/env.json rename to impls/miniMAL/env.json diff --git a/miniMAL/miniMAL-core.json b/impls/miniMAL/miniMAL-core.json similarity index 100% rename from miniMAL/miniMAL-core.json rename to impls/miniMAL/miniMAL-core.json diff --git a/miniMAL/node_readline.js b/impls/miniMAL/node_readline.js similarity index 100% rename from miniMAL/node_readline.js rename to impls/miniMAL/node_readline.js diff --git a/miniMAL/package.json b/impls/miniMAL/package.json similarity index 100% rename from miniMAL/package.json rename to impls/miniMAL/package.json diff --git a/miniMAL/printer.json b/impls/miniMAL/printer.json similarity index 100% rename from miniMAL/printer.json rename to impls/miniMAL/printer.json diff --git a/miniMAL/reader.json b/impls/miniMAL/reader.json similarity index 100% rename from miniMAL/reader.json rename to impls/miniMAL/reader.json diff --git a/miniMAL/run b/impls/miniMAL/run similarity index 100% rename from miniMAL/run rename to impls/miniMAL/run diff --git a/miniMAL/step0_repl.json b/impls/miniMAL/step0_repl.json similarity index 100% rename from miniMAL/step0_repl.json rename to impls/miniMAL/step0_repl.json diff --git a/miniMAL/step1_read_print.json b/impls/miniMAL/step1_read_print.json similarity index 100% rename from miniMAL/step1_read_print.json rename to impls/miniMAL/step1_read_print.json diff --git a/miniMAL/step2_eval.json b/impls/miniMAL/step2_eval.json similarity index 100% rename from miniMAL/step2_eval.json rename to impls/miniMAL/step2_eval.json diff --git a/miniMAL/step3_env.json b/impls/miniMAL/step3_env.json similarity index 100% rename from miniMAL/step3_env.json rename to impls/miniMAL/step3_env.json diff --git a/miniMAL/step4_if_fn_do.json b/impls/miniMAL/step4_if_fn_do.json similarity index 100% rename from miniMAL/step4_if_fn_do.json rename to impls/miniMAL/step4_if_fn_do.json diff --git a/miniMAL/step5_tco.json b/impls/miniMAL/step5_tco.json similarity index 100% rename from miniMAL/step5_tco.json rename to impls/miniMAL/step5_tco.json diff --git a/miniMAL/step6_file.json b/impls/miniMAL/step6_file.json similarity index 100% rename from miniMAL/step6_file.json rename to impls/miniMAL/step6_file.json diff --git a/miniMAL/step7_quote.json b/impls/miniMAL/step7_quote.json similarity index 100% rename from miniMAL/step7_quote.json rename to impls/miniMAL/step7_quote.json diff --git a/miniMAL/step8_macros.json b/impls/miniMAL/step8_macros.json similarity index 100% rename from miniMAL/step8_macros.json rename to impls/miniMAL/step8_macros.json diff --git a/miniMAL/step9_try.json b/impls/miniMAL/step9_try.json similarity index 100% rename from miniMAL/step9_try.json rename to impls/miniMAL/step9_try.json diff --git a/miniMAL/stepA_mal.json b/impls/miniMAL/stepA_mal.json similarity index 100% rename from miniMAL/stepA_mal.json rename to impls/miniMAL/stepA_mal.json diff --git a/miniMAL/tests/step5_tco.mal b/impls/miniMAL/tests/step5_tco.mal similarity index 100% rename from miniMAL/tests/step5_tco.mal rename to impls/miniMAL/tests/step5_tco.mal diff --git a/miniMAL/types.json b/impls/miniMAL/types.json similarity index 100% rename from miniMAL/types.json rename to impls/miniMAL/types.json diff --git a/nasm/Dockerfile b/impls/nasm/Dockerfile similarity index 100% rename from nasm/Dockerfile rename to impls/nasm/Dockerfile diff --git a/nasm/Makefile b/impls/nasm/Makefile similarity index 100% rename from nasm/Makefile rename to impls/nasm/Makefile diff --git a/nasm/README.md b/impls/nasm/README.md similarity index 100% rename from nasm/README.md rename to impls/nasm/README.md diff --git a/nasm/core.asm b/impls/nasm/core.asm similarity index 100% rename from nasm/core.asm rename to impls/nasm/core.asm diff --git a/nasm/env.asm b/impls/nasm/env.asm similarity index 100% rename from nasm/env.asm rename to impls/nasm/env.asm diff --git a/nasm/exceptions.asm b/impls/nasm/exceptions.asm similarity index 100% rename from nasm/exceptions.asm rename to impls/nasm/exceptions.asm diff --git a/nasm/macros.mac b/impls/nasm/macros.mac similarity index 100% rename from nasm/macros.mac rename to impls/nasm/macros.mac diff --git a/nasm/printer.asm b/impls/nasm/printer.asm similarity index 100% rename from nasm/printer.asm rename to impls/nasm/printer.asm diff --git a/nasm/reader.asm b/impls/nasm/reader.asm similarity index 100% rename from nasm/reader.asm rename to impls/nasm/reader.asm diff --git a/nasm/run b/impls/nasm/run similarity index 100% rename from nasm/run rename to impls/nasm/run diff --git a/nasm/step0_repl.asm b/impls/nasm/step0_repl.asm similarity index 100% rename from nasm/step0_repl.asm rename to impls/nasm/step0_repl.asm diff --git a/nasm/step1_read_print.asm b/impls/nasm/step1_read_print.asm similarity index 100% rename from nasm/step1_read_print.asm rename to impls/nasm/step1_read_print.asm diff --git a/nasm/step2_eval.asm b/impls/nasm/step2_eval.asm similarity index 100% rename from nasm/step2_eval.asm rename to impls/nasm/step2_eval.asm diff --git a/nasm/step3_env.asm b/impls/nasm/step3_env.asm similarity index 100% rename from nasm/step3_env.asm rename to impls/nasm/step3_env.asm diff --git a/nasm/step4_if_fn_do.asm b/impls/nasm/step4_if_fn_do.asm similarity index 100% rename from nasm/step4_if_fn_do.asm rename to impls/nasm/step4_if_fn_do.asm diff --git a/nasm/step5_tco.asm b/impls/nasm/step5_tco.asm similarity index 100% rename from nasm/step5_tco.asm rename to impls/nasm/step5_tco.asm diff --git a/nasm/step6_file.asm b/impls/nasm/step6_file.asm similarity index 100% rename from nasm/step6_file.asm rename to impls/nasm/step6_file.asm diff --git a/nasm/step7_quote.asm b/impls/nasm/step7_quote.asm similarity index 100% rename from nasm/step7_quote.asm rename to impls/nasm/step7_quote.asm diff --git a/nasm/step8_macros.asm b/impls/nasm/step8_macros.asm similarity index 100% rename from nasm/step8_macros.asm rename to impls/nasm/step8_macros.asm diff --git a/nasm/step9_try.asm b/impls/nasm/step9_try.asm similarity index 100% rename from nasm/step9_try.asm rename to impls/nasm/step9_try.asm diff --git a/nasm/stepA_mal.asm b/impls/nasm/stepA_mal.asm similarity index 100% rename from nasm/stepA_mal.asm rename to impls/nasm/stepA_mal.asm diff --git a/nasm/system.asm b/impls/nasm/system.asm similarity index 100% rename from nasm/system.asm rename to impls/nasm/system.asm diff --git a/nasm/types.asm b/impls/nasm/types.asm similarity index 100% rename from nasm/types.asm rename to impls/nasm/types.asm diff --git a/nim/Dockerfile b/impls/nim/Dockerfile similarity index 100% rename from nim/Dockerfile rename to impls/nim/Dockerfile diff --git a/nim/Makefile b/impls/nim/Makefile similarity index 100% rename from nim/Makefile rename to impls/nim/Makefile diff --git a/nim/core.nim b/impls/nim/core.nim similarity index 100% rename from nim/core.nim rename to impls/nim/core.nim diff --git a/nim/env.nim b/impls/nim/env.nim similarity index 100% rename from nim/env.nim rename to impls/nim/env.nim diff --git a/nim/mal.nimble b/impls/nim/mal.nimble similarity index 100% rename from nim/mal.nimble rename to impls/nim/mal.nimble diff --git a/nim/nim.cfg b/impls/nim/nim.cfg similarity index 100% rename from nim/nim.cfg rename to impls/nim/nim.cfg diff --git a/nim/printer.nim b/impls/nim/printer.nim similarity index 100% rename from nim/printer.nim rename to impls/nim/printer.nim diff --git a/nim/reader.nim b/impls/nim/reader.nim similarity index 100% rename from nim/reader.nim rename to impls/nim/reader.nim diff --git a/nim/run b/impls/nim/run similarity index 100% rename from nim/run rename to impls/nim/run diff --git a/nim/step0_repl.nim b/impls/nim/step0_repl.nim similarity index 100% rename from nim/step0_repl.nim rename to impls/nim/step0_repl.nim diff --git a/nim/step1_read_print.nim b/impls/nim/step1_read_print.nim similarity index 100% rename from nim/step1_read_print.nim rename to impls/nim/step1_read_print.nim diff --git a/nim/step2_eval.nim b/impls/nim/step2_eval.nim similarity index 100% rename from nim/step2_eval.nim rename to impls/nim/step2_eval.nim diff --git a/nim/step3_env.nim b/impls/nim/step3_env.nim similarity index 100% rename from nim/step3_env.nim rename to impls/nim/step3_env.nim diff --git a/nim/step4_if_fn_do.nim b/impls/nim/step4_if_fn_do.nim similarity index 100% rename from nim/step4_if_fn_do.nim rename to impls/nim/step4_if_fn_do.nim diff --git a/nim/step5_tco.nim b/impls/nim/step5_tco.nim similarity index 100% rename from nim/step5_tco.nim rename to impls/nim/step5_tco.nim diff --git a/nim/step6_file.nim b/impls/nim/step6_file.nim similarity index 100% rename from nim/step6_file.nim rename to impls/nim/step6_file.nim diff --git a/nim/step7_quote.nim b/impls/nim/step7_quote.nim similarity index 100% rename from nim/step7_quote.nim rename to impls/nim/step7_quote.nim diff --git a/nim/step8_macros.nim b/impls/nim/step8_macros.nim similarity index 100% rename from nim/step8_macros.nim rename to impls/nim/step8_macros.nim diff --git a/nim/step9_try.nim b/impls/nim/step9_try.nim similarity index 100% rename from nim/step9_try.nim rename to impls/nim/step9_try.nim diff --git a/nim/stepA_mal.nim b/impls/nim/stepA_mal.nim similarity index 100% rename from nim/stepA_mal.nim rename to impls/nim/stepA_mal.nim diff --git a/nim/tests/step5_tco.mal b/impls/nim/tests/step5_tco.mal similarity index 100% rename from nim/tests/step5_tco.mal rename to impls/nim/tests/step5_tco.mal diff --git a/nim/types.nim b/impls/nim/types.nim similarity index 100% rename from nim/types.nim rename to impls/nim/types.nim diff --git a/objc/Dockerfile b/impls/objc/Dockerfile similarity index 100% rename from objc/Dockerfile rename to impls/objc/Dockerfile diff --git a/objc/Makefile b/impls/objc/Makefile similarity index 100% rename from objc/Makefile rename to impls/objc/Makefile diff --git a/objc/core.h b/impls/objc/core.h similarity index 100% rename from objc/core.h rename to impls/objc/core.h diff --git a/objc/core.m b/impls/objc/core.m similarity index 100% rename from objc/core.m rename to impls/objc/core.m diff --git a/objc/env.h b/impls/objc/env.h similarity index 100% rename from objc/env.h rename to impls/objc/env.h diff --git a/objc/env.m b/impls/objc/env.m similarity index 100% rename from objc/env.m rename to impls/objc/env.m diff --git a/objc/mal_readline.c b/impls/objc/mal_readline.c similarity index 100% rename from objc/mal_readline.c rename to impls/objc/mal_readline.c diff --git a/objc/mal_readline.h b/impls/objc/mal_readline.h similarity index 100% rename from objc/mal_readline.h rename to impls/objc/mal_readline.h diff --git a/objc/malfunc.h b/impls/objc/malfunc.h similarity index 100% rename from objc/malfunc.h rename to impls/objc/malfunc.h diff --git a/objc/malfunc.m b/impls/objc/malfunc.m similarity index 100% rename from objc/malfunc.m rename to impls/objc/malfunc.m diff --git a/objc/printer.h b/impls/objc/printer.h similarity index 100% rename from objc/printer.h rename to impls/objc/printer.h diff --git a/objc/printer.m b/impls/objc/printer.m similarity index 100% rename from objc/printer.m rename to impls/objc/printer.m diff --git a/objc/reader.h b/impls/objc/reader.h similarity index 100% rename from objc/reader.h rename to impls/objc/reader.h diff --git a/objc/reader.m b/impls/objc/reader.m similarity index 100% rename from objc/reader.m rename to impls/objc/reader.m diff --git a/objc/run b/impls/objc/run similarity index 100% rename from objc/run rename to impls/objc/run diff --git a/objc/step0_repl.m b/impls/objc/step0_repl.m similarity index 100% rename from objc/step0_repl.m rename to impls/objc/step0_repl.m diff --git a/objc/step1_read_print.m b/impls/objc/step1_read_print.m similarity index 100% rename from objc/step1_read_print.m rename to impls/objc/step1_read_print.m diff --git a/objc/step2_eval.m b/impls/objc/step2_eval.m similarity index 100% rename from objc/step2_eval.m rename to impls/objc/step2_eval.m diff --git a/objc/step3_env.m b/impls/objc/step3_env.m similarity index 100% rename from objc/step3_env.m rename to impls/objc/step3_env.m diff --git a/objc/step4_if_fn_do.m b/impls/objc/step4_if_fn_do.m similarity index 100% rename from objc/step4_if_fn_do.m rename to impls/objc/step4_if_fn_do.m diff --git a/objc/step5_tco.m b/impls/objc/step5_tco.m similarity index 100% rename from objc/step5_tco.m rename to impls/objc/step5_tco.m diff --git a/objc/step6_file.m b/impls/objc/step6_file.m similarity index 100% rename from objc/step6_file.m rename to impls/objc/step6_file.m diff --git a/objc/step7_quote.m b/impls/objc/step7_quote.m similarity index 100% rename from objc/step7_quote.m rename to impls/objc/step7_quote.m diff --git a/objc/step8_macros.m b/impls/objc/step8_macros.m similarity index 100% rename from objc/step8_macros.m rename to impls/objc/step8_macros.m diff --git a/objc/step9_try.m b/impls/objc/step9_try.m similarity index 100% rename from objc/step9_try.m rename to impls/objc/step9_try.m diff --git a/objc/stepA_mal.m b/impls/objc/stepA_mal.m similarity index 100% rename from objc/stepA_mal.m rename to impls/objc/stepA_mal.m diff --git a/objc/tests/step5_tco.mal b/impls/objc/tests/step5_tco.mal similarity index 100% rename from objc/tests/step5_tco.mal rename to impls/objc/tests/step5_tco.mal diff --git a/objc/types.h b/impls/objc/types.h similarity index 100% rename from objc/types.h rename to impls/objc/types.h diff --git a/objc/types.m b/impls/objc/types.m similarity index 100% rename from objc/types.m rename to impls/objc/types.m diff --git a/objpascal/Dockerfile b/impls/objpascal/Dockerfile similarity index 100% rename from objpascal/Dockerfile rename to impls/objpascal/Dockerfile diff --git a/objpascal/Makefile b/impls/objpascal/Makefile similarity index 100% rename from objpascal/Makefile rename to impls/objpascal/Makefile diff --git a/objpascal/core.pas b/impls/objpascal/core.pas similarity index 100% rename from objpascal/core.pas rename to impls/objpascal/core.pas diff --git a/objpascal/mal_env.pas b/impls/objpascal/mal_env.pas similarity index 100% rename from objpascal/mal_env.pas rename to impls/objpascal/mal_env.pas diff --git a/objpascal/mal_func.pas b/impls/objpascal/mal_func.pas similarity index 100% rename from objpascal/mal_func.pas rename to impls/objpascal/mal_func.pas diff --git a/objpascal/mal_readline.pas b/impls/objpascal/mal_readline.pas similarity index 100% rename from objpascal/mal_readline.pas rename to impls/objpascal/mal_readline.pas diff --git a/objpascal/mal_types.pas b/impls/objpascal/mal_types.pas similarity index 100% rename from objpascal/mal_types.pas rename to impls/objpascal/mal_types.pas diff --git a/objpascal/printer.pas b/impls/objpascal/printer.pas similarity index 100% rename from objpascal/printer.pas rename to impls/objpascal/printer.pas diff --git a/objpascal/reader.pas b/impls/objpascal/reader.pas similarity index 100% rename from objpascal/reader.pas rename to impls/objpascal/reader.pas diff --git a/objpascal/regexpr/Source/RegExpr.pas b/impls/objpascal/regexpr/Source/RegExpr.pas similarity index 100% rename from objpascal/regexpr/Source/RegExpr.pas rename to impls/objpascal/regexpr/Source/RegExpr.pas diff --git a/objpascal/run b/impls/objpascal/run similarity index 100% rename from objpascal/run rename to impls/objpascal/run diff --git a/objpascal/step0_repl.pas b/impls/objpascal/step0_repl.pas similarity index 100% rename from objpascal/step0_repl.pas rename to impls/objpascal/step0_repl.pas diff --git a/objpascal/step1_read_print.pas b/impls/objpascal/step1_read_print.pas similarity index 100% rename from objpascal/step1_read_print.pas rename to impls/objpascal/step1_read_print.pas diff --git a/objpascal/step2_eval.pas b/impls/objpascal/step2_eval.pas similarity index 100% rename from objpascal/step2_eval.pas rename to impls/objpascal/step2_eval.pas diff --git a/objpascal/step3_env.pas b/impls/objpascal/step3_env.pas similarity index 100% rename from objpascal/step3_env.pas rename to impls/objpascal/step3_env.pas diff --git a/objpascal/step4_if_fn_do.pas b/impls/objpascal/step4_if_fn_do.pas similarity index 100% rename from objpascal/step4_if_fn_do.pas rename to impls/objpascal/step4_if_fn_do.pas diff --git a/objpascal/step5_tco.pas b/impls/objpascal/step5_tco.pas similarity index 100% rename from objpascal/step5_tco.pas rename to impls/objpascal/step5_tco.pas diff --git a/objpascal/step6_file.pas b/impls/objpascal/step6_file.pas similarity index 100% rename from objpascal/step6_file.pas rename to impls/objpascal/step6_file.pas diff --git a/objpascal/step7_quote.pas b/impls/objpascal/step7_quote.pas similarity index 100% rename from objpascal/step7_quote.pas rename to impls/objpascal/step7_quote.pas diff --git a/objpascal/step8_macros.pas b/impls/objpascal/step8_macros.pas similarity index 100% rename from objpascal/step8_macros.pas rename to impls/objpascal/step8_macros.pas diff --git a/objpascal/step9_try.pas b/impls/objpascal/step9_try.pas similarity index 100% rename from objpascal/step9_try.pas rename to impls/objpascal/step9_try.pas diff --git a/objpascal/stepA_mal.pas b/impls/objpascal/stepA_mal.pas similarity index 100% rename from objpascal/stepA_mal.pas rename to impls/objpascal/stepA_mal.pas diff --git a/objpascal/tests/step5_tco.mal b/impls/objpascal/tests/step5_tco.mal similarity index 100% rename from objpascal/tests/step5_tco.mal rename to impls/objpascal/tests/step5_tco.mal diff --git a/ocaml/Dockerfile b/impls/ocaml/Dockerfile similarity index 100% rename from ocaml/Dockerfile rename to impls/ocaml/Dockerfile diff --git a/ocaml/Makefile b/impls/ocaml/Makefile similarity index 100% rename from ocaml/Makefile rename to impls/ocaml/Makefile diff --git a/ocaml/core.ml b/impls/ocaml/core.ml similarity index 100% rename from ocaml/core.ml rename to impls/ocaml/core.ml diff --git a/ocaml/env.ml b/impls/ocaml/env.ml similarity index 100% rename from ocaml/env.ml rename to impls/ocaml/env.ml diff --git a/ocaml/printer.ml b/impls/ocaml/printer.ml similarity index 100% rename from ocaml/printer.ml rename to impls/ocaml/printer.ml diff --git a/ocaml/reader.ml b/impls/ocaml/reader.ml similarity index 100% rename from ocaml/reader.ml rename to impls/ocaml/reader.ml diff --git a/ocaml/run b/impls/ocaml/run similarity index 100% rename from ocaml/run rename to impls/ocaml/run diff --git a/ocaml/step0_repl.ml b/impls/ocaml/step0_repl.ml similarity index 100% rename from ocaml/step0_repl.ml rename to impls/ocaml/step0_repl.ml diff --git a/ocaml/step1_read_print.ml b/impls/ocaml/step1_read_print.ml similarity index 100% rename from ocaml/step1_read_print.ml rename to impls/ocaml/step1_read_print.ml diff --git a/ocaml/step2_eval.ml b/impls/ocaml/step2_eval.ml similarity index 100% rename from ocaml/step2_eval.ml rename to impls/ocaml/step2_eval.ml diff --git a/ocaml/step3_env.ml b/impls/ocaml/step3_env.ml similarity index 100% rename from ocaml/step3_env.ml rename to impls/ocaml/step3_env.ml diff --git a/ocaml/step4_if_fn_do.ml b/impls/ocaml/step4_if_fn_do.ml similarity index 100% rename from ocaml/step4_if_fn_do.ml rename to impls/ocaml/step4_if_fn_do.ml diff --git a/ocaml/step5_tco.ml b/impls/ocaml/step5_tco.ml similarity index 100% rename from ocaml/step5_tco.ml rename to impls/ocaml/step5_tco.ml diff --git a/ocaml/step6_file.ml b/impls/ocaml/step6_file.ml similarity index 100% rename from ocaml/step6_file.ml rename to impls/ocaml/step6_file.ml diff --git a/ocaml/step7_quote.ml b/impls/ocaml/step7_quote.ml similarity index 100% rename from ocaml/step7_quote.ml rename to impls/ocaml/step7_quote.ml diff --git a/ocaml/step8_macros.ml b/impls/ocaml/step8_macros.ml similarity index 100% rename from ocaml/step8_macros.ml rename to impls/ocaml/step8_macros.ml diff --git a/ocaml/step9_try.ml b/impls/ocaml/step9_try.ml similarity index 100% rename from ocaml/step9_try.ml rename to impls/ocaml/step9_try.ml diff --git a/ocaml/stepA_mal.ml b/impls/ocaml/stepA_mal.ml similarity index 100% rename from ocaml/stepA_mal.ml rename to impls/ocaml/stepA_mal.ml diff --git a/ocaml/tests/step5_tco.mal b/impls/ocaml/tests/step5_tco.mal similarity index 100% rename from ocaml/tests/step5_tco.mal rename to impls/ocaml/tests/step5_tco.mal diff --git a/ocaml/types.ml b/impls/ocaml/types.ml similarity index 100% rename from ocaml/types.ml rename to impls/ocaml/types.ml diff --git a/perl/Dockerfile b/impls/perl/Dockerfile similarity index 100% rename from perl/Dockerfile rename to impls/perl/Dockerfile diff --git a/perl/Makefile b/impls/perl/Makefile similarity index 100% rename from perl/Makefile rename to impls/perl/Makefile diff --git a/perl/README.md b/impls/perl/README.md similarity index 100% rename from perl/README.md rename to impls/perl/README.md diff --git a/perl/core.pm b/impls/perl/core.pm similarity index 100% rename from perl/core.pm rename to impls/perl/core.pm diff --git a/perl/env.pm b/impls/perl/env.pm similarity index 100% rename from perl/env.pm rename to impls/perl/env.pm diff --git a/perl/interop.pm b/impls/perl/interop.pm similarity index 100% rename from perl/interop.pm rename to impls/perl/interop.pm diff --git a/perl/printer.pm b/impls/perl/printer.pm similarity index 100% rename from perl/printer.pm rename to impls/perl/printer.pm diff --git a/perl/reader.pm b/impls/perl/reader.pm similarity index 100% rename from perl/reader.pm rename to impls/perl/reader.pm diff --git a/perl/readline.pm b/impls/perl/readline.pm similarity index 100% rename from perl/readline.pm rename to impls/perl/readline.pm diff --git a/perl/run b/impls/perl/run similarity index 100% rename from perl/run rename to impls/perl/run diff --git a/perl/step0_repl.pl b/impls/perl/step0_repl.pl similarity index 100% rename from perl/step0_repl.pl rename to impls/perl/step0_repl.pl diff --git a/perl/step1_read_print.pl b/impls/perl/step1_read_print.pl similarity index 100% rename from perl/step1_read_print.pl rename to impls/perl/step1_read_print.pl diff --git a/perl/step2_eval.pl b/impls/perl/step2_eval.pl similarity index 100% rename from perl/step2_eval.pl rename to impls/perl/step2_eval.pl diff --git a/perl/step3_env.pl b/impls/perl/step3_env.pl similarity index 100% rename from perl/step3_env.pl rename to impls/perl/step3_env.pl diff --git a/perl/step4_if_fn_do.pl b/impls/perl/step4_if_fn_do.pl similarity index 100% rename from perl/step4_if_fn_do.pl rename to impls/perl/step4_if_fn_do.pl diff --git a/perl/step5_tco.pl b/impls/perl/step5_tco.pl similarity index 100% rename from perl/step5_tco.pl rename to impls/perl/step5_tco.pl diff --git a/perl/step6_file.pl b/impls/perl/step6_file.pl similarity index 100% rename from perl/step6_file.pl rename to impls/perl/step6_file.pl diff --git a/perl/step7_quote.pl b/impls/perl/step7_quote.pl similarity index 100% rename from perl/step7_quote.pl rename to impls/perl/step7_quote.pl diff --git a/perl/step8_macros.pl b/impls/perl/step8_macros.pl similarity index 100% rename from perl/step8_macros.pl rename to impls/perl/step8_macros.pl diff --git a/perl/step9_try.pl b/impls/perl/step9_try.pl similarity index 100% rename from perl/step9_try.pl rename to impls/perl/step9_try.pl diff --git a/perl/stepA_mal.pl b/impls/perl/stepA_mal.pl similarity index 100% rename from perl/stepA_mal.pl rename to impls/perl/stepA_mal.pl diff --git a/perl/tests/step5_tco.mal b/impls/perl/tests/step5_tco.mal similarity index 100% rename from perl/tests/step5_tco.mal rename to impls/perl/tests/step5_tco.mal diff --git a/perl/tests/stepA_mal.mal b/impls/perl/tests/stepA_mal.mal similarity index 100% rename from perl/tests/stepA_mal.mal rename to impls/perl/tests/stepA_mal.mal diff --git a/perl/types.pm b/impls/perl/types.pm similarity index 100% rename from perl/types.pm rename to impls/perl/types.pm diff --git a/perl6/Dockerfile b/impls/perl6/Dockerfile similarity index 100% rename from perl6/Dockerfile rename to impls/perl6/Dockerfile diff --git a/perl6/Makefile b/impls/perl6/Makefile similarity index 100% rename from perl6/Makefile rename to impls/perl6/Makefile diff --git a/perl6/core.pm b/impls/perl6/core.pm similarity index 100% rename from perl6/core.pm rename to impls/perl6/core.pm diff --git a/perl6/env.pm b/impls/perl6/env.pm similarity index 100% rename from perl6/env.pm rename to impls/perl6/env.pm diff --git a/perl6/printer.pm b/impls/perl6/printer.pm similarity index 100% rename from perl6/printer.pm rename to impls/perl6/printer.pm diff --git a/perl6/reader.pm b/impls/perl6/reader.pm similarity index 100% rename from perl6/reader.pm rename to impls/perl6/reader.pm diff --git a/perl6/run b/impls/perl6/run similarity index 100% rename from perl6/run rename to impls/perl6/run diff --git a/perl6/step0_repl.pl b/impls/perl6/step0_repl.pl similarity index 100% rename from perl6/step0_repl.pl rename to impls/perl6/step0_repl.pl diff --git a/perl6/step1_read_print.pl b/impls/perl6/step1_read_print.pl similarity index 100% rename from perl6/step1_read_print.pl rename to impls/perl6/step1_read_print.pl diff --git a/perl6/step2_eval.pl b/impls/perl6/step2_eval.pl similarity index 100% rename from perl6/step2_eval.pl rename to impls/perl6/step2_eval.pl diff --git a/perl6/step3_env.pl b/impls/perl6/step3_env.pl similarity index 100% rename from perl6/step3_env.pl rename to impls/perl6/step3_env.pl diff --git a/perl6/step4_if_fn_do.pl b/impls/perl6/step4_if_fn_do.pl similarity index 100% rename from perl6/step4_if_fn_do.pl rename to impls/perl6/step4_if_fn_do.pl diff --git a/perl6/step5_tco.pl b/impls/perl6/step5_tco.pl similarity index 100% rename from perl6/step5_tco.pl rename to impls/perl6/step5_tco.pl diff --git a/perl6/step6_file.pl b/impls/perl6/step6_file.pl similarity index 100% rename from perl6/step6_file.pl rename to impls/perl6/step6_file.pl diff --git a/perl6/step7_quote.pl b/impls/perl6/step7_quote.pl similarity index 100% rename from perl6/step7_quote.pl rename to impls/perl6/step7_quote.pl diff --git a/perl6/step8_macros.pl b/impls/perl6/step8_macros.pl similarity index 100% rename from perl6/step8_macros.pl rename to impls/perl6/step8_macros.pl diff --git a/perl6/step9_try.pl b/impls/perl6/step9_try.pl similarity index 100% rename from perl6/step9_try.pl rename to impls/perl6/step9_try.pl diff --git a/perl6/stepA_mal.pl b/impls/perl6/stepA_mal.pl similarity index 100% rename from perl6/stepA_mal.pl rename to impls/perl6/stepA_mal.pl diff --git a/perl6/tests/stepA_mal.mal b/impls/perl6/tests/stepA_mal.mal similarity index 100% rename from perl6/tests/stepA_mal.mal rename to impls/perl6/tests/stepA_mal.mal diff --git a/perl6/types.pm b/impls/perl6/types.pm similarity index 100% rename from perl6/types.pm rename to impls/perl6/types.pm diff --git a/php/Dockerfile b/impls/php/Dockerfile similarity index 100% rename from php/Dockerfile rename to impls/php/Dockerfile diff --git a/php/Makefile b/impls/php/Makefile similarity index 100% rename from php/Makefile rename to impls/php/Makefile diff --git a/php/README.md b/impls/php/README.md similarity index 100% rename from php/README.md rename to impls/php/README.md diff --git a/php/core.php b/impls/php/core.php similarity index 100% rename from php/core.php rename to impls/php/core.php diff --git a/php/env.php b/impls/php/env.php similarity index 100% rename from php/env.php rename to impls/php/env.php diff --git a/php/interop.php b/impls/php/interop.php similarity index 100% rename from php/interop.php rename to impls/php/interop.php diff --git a/php/printer.php b/impls/php/printer.php similarity index 100% rename from php/printer.php rename to impls/php/printer.php diff --git a/php/reader.php b/impls/php/reader.php similarity index 100% rename from php/reader.php rename to impls/php/reader.php diff --git a/php/readline.php b/impls/php/readline.php similarity index 100% rename from php/readline.php rename to impls/php/readline.php diff --git a/php/run b/impls/php/run similarity index 100% rename from php/run rename to impls/php/run diff --git a/php/step0_repl.php b/impls/php/step0_repl.php similarity index 100% rename from php/step0_repl.php rename to impls/php/step0_repl.php diff --git a/php/step1_read_print.php b/impls/php/step1_read_print.php similarity index 100% rename from php/step1_read_print.php rename to impls/php/step1_read_print.php diff --git a/php/step2_eval.php b/impls/php/step2_eval.php similarity index 100% rename from php/step2_eval.php rename to impls/php/step2_eval.php diff --git a/php/step3_env.php b/impls/php/step3_env.php similarity index 100% rename from php/step3_env.php rename to impls/php/step3_env.php diff --git a/php/step4_if_fn_do.php b/impls/php/step4_if_fn_do.php similarity index 100% rename from php/step4_if_fn_do.php rename to impls/php/step4_if_fn_do.php diff --git a/php/step5_tco.php b/impls/php/step5_tco.php similarity index 100% rename from php/step5_tco.php rename to impls/php/step5_tco.php diff --git a/php/step6_file.php b/impls/php/step6_file.php similarity index 100% rename from php/step6_file.php rename to impls/php/step6_file.php diff --git a/php/step7_quote.php b/impls/php/step7_quote.php similarity index 100% rename from php/step7_quote.php rename to impls/php/step7_quote.php diff --git a/php/step8_macros.php b/impls/php/step8_macros.php similarity index 100% rename from php/step8_macros.php rename to impls/php/step8_macros.php diff --git a/php/step9_try.php b/impls/php/step9_try.php similarity index 100% rename from php/step9_try.php rename to impls/php/step9_try.php diff --git a/php/stepA_mal.php b/impls/php/stepA_mal.php similarity index 100% rename from php/stepA_mal.php rename to impls/php/stepA_mal.php diff --git a/php/tests/step5_tco.mal b/impls/php/tests/step5_tco.mal similarity index 100% rename from php/tests/step5_tco.mal rename to impls/php/tests/step5_tco.mal diff --git a/php/tests/stepA_mal.mal b/impls/php/tests/stepA_mal.mal similarity index 100% rename from php/tests/stepA_mal.mal rename to impls/php/tests/stepA_mal.mal diff --git a/php/types.php b/impls/php/types.php similarity index 100% rename from php/types.php rename to impls/php/types.php diff --git a/php/webrunner.php b/impls/php/webrunner.php similarity index 100% rename from php/webrunner.php rename to impls/php/webrunner.php diff --git a/picolisp/Dockerfile b/impls/picolisp/Dockerfile similarity index 100% rename from picolisp/Dockerfile rename to impls/picolisp/Dockerfile diff --git a/picolisp/Makefile b/impls/picolisp/Makefile similarity index 100% rename from picolisp/Makefile rename to impls/picolisp/Makefile diff --git a/picolisp/core.l b/impls/picolisp/core.l similarity index 100% rename from picolisp/core.l rename to impls/picolisp/core.l diff --git a/picolisp/env.l b/impls/picolisp/env.l similarity index 100% rename from picolisp/env.l rename to impls/picolisp/env.l diff --git a/picolisp/func.l b/impls/picolisp/func.l similarity index 100% rename from picolisp/func.l rename to impls/picolisp/func.l diff --git a/picolisp/printer.l b/impls/picolisp/printer.l similarity index 100% rename from picolisp/printer.l rename to impls/picolisp/printer.l diff --git a/picolisp/reader.l b/impls/picolisp/reader.l similarity index 100% rename from picolisp/reader.l rename to impls/picolisp/reader.l diff --git a/picolisp/readline.l b/impls/picolisp/readline.l similarity index 100% rename from picolisp/readline.l rename to impls/picolisp/readline.l diff --git a/picolisp/run b/impls/picolisp/run similarity index 100% rename from picolisp/run rename to impls/picolisp/run diff --git a/picolisp/step0_repl.l b/impls/picolisp/step0_repl.l similarity index 100% rename from picolisp/step0_repl.l rename to impls/picolisp/step0_repl.l diff --git a/picolisp/step1_read_print.l b/impls/picolisp/step1_read_print.l similarity index 100% rename from picolisp/step1_read_print.l rename to impls/picolisp/step1_read_print.l diff --git a/picolisp/step2_eval.l b/impls/picolisp/step2_eval.l similarity index 100% rename from picolisp/step2_eval.l rename to impls/picolisp/step2_eval.l diff --git a/picolisp/step3_env.l b/impls/picolisp/step3_env.l similarity index 100% rename from picolisp/step3_env.l rename to impls/picolisp/step3_env.l diff --git a/picolisp/step4_if_fn_do.l b/impls/picolisp/step4_if_fn_do.l similarity index 100% rename from picolisp/step4_if_fn_do.l rename to impls/picolisp/step4_if_fn_do.l diff --git a/picolisp/step5_tco.l b/impls/picolisp/step5_tco.l similarity index 100% rename from picolisp/step5_tco.l rename to impls/picolisp/step5_tco.l diff --git a/picolisp/step6_file.l b/impls/picolisp/step6_file.l similarity index 100% rename from picolisp/step6_file.l rename to impls/picolisp/step6_file.l diff --git a/picolisp/step7_quote.l b/impls/picolisp/step7_quote.l similarity index 100% rename from picolisp/step7_quote.l rename to impls/picolisp/step7_quote.l diff --git a/picolisp/step8_macros.l b/impls/picolisp/step8_macros.l similarity index 100% rename from picolisp/step8_macros.l rename to impls/picolisp/step8_macros.l diff --git a/picolisp/step9_try.l b/impls/picolisp/step9_try.l similarity index 100% rename from picolisp/step9_try.l rename to impls/picolisp/step9_try.l diff --git a/picolisp/stepA_mal.l b/impls/picolisp/stepA_mal.l similarity index 100% rename from picolisp/stepA_mal.l rename to impls/picolisp/stepA_mal.l diff --git a/picolisp/tests/step5_tco.mal b/impls/picolisp/tests/step5_tco.mal similarity index 100% rename from picolisp/tests/step5_tco.mal rename to impls/picolisp/tests/step5_tco.mal diff --git a/picolisp/tests/stepA_mal.mal b/impls/picolisp/tests/stepA_mal.mal similarity index 100% rename from picolisp/tests/stepA_mal.mal rename to impls/picolisp/tests/stepA_mal.mal diff --git a/picolisp/types.l b/impls/picolisp/types.l similarity index 100% rename from picolisp/types.l rename to impls/picolisp/types.l diff --git a/pike/Core.pmod b/impls/pike/Core.pmod similarity index 100% rename from pike/Core.pmod rename to impls/pike/Core.pmod diff --git a/pike/Dockerfile b/impls/pike/Dockerfile similarity index 100% rename from pike/Dockerfile rename to impls/pike/Dockerfile diff --git a/pike/Env.pmod b/impls/pike/Env.pmod similarity index 100% rename from pike/Env.pmod rename to impls/pike/Env.pmod diff --git a/pike/Interop.pmod b/impls/pike/Interop.pmod similarity index 100% rename from pike/Interop.pmod rename to impls/pike/Interop.pmod diff --git a/pike/Makefile b/impls/pike/Makefile similarity index 100% rename from pike/Makefile rename to impls/pike/Makefile diff --git a/pike/Printer.pmod b/impls/pike/Printer.pmod similarity index 100% rename from pike/Printer.pmod rename to impls/pike/Printer.pmod diff --git a/pike/Reader.pmod b/impls/pike/Reader.pmod similarity index 100% rename from pike/Reader.pmod rename to impls/pike/Reader.pmod diff --git a/pike/Readline.pmod b/impls/pike/Readline.pmod similarity index 100% rename from pike/Readline.pmod rename to impls/pike/Readline.pmod diff --git a/pike/Types.pmod b/impls/pike/Types.pmod similarity index 100% rename from pike/Types.pmod rename to impls/pike/Types.pmod diff --git a/pike/run b/impls/pike/run similarity index 100% rename from pike/run rename to impls/pike/run diff --git a/pike/step0_repl.pike b/impls/pike/step0_repl.pike similarity index 100% rename from pike/step0_repl.pike rename to impls/pike/step0_repl.pike diff --git a/pike/step1_read_print.pike b/impls/pike/step1_read_print.pike similarity index 100% rename from pike/step1_read_print.pike rename to impls/pike/step1_read_print.pike diff --git a/pike/step2_eval.pike b/impls/pike/step2_eval.pike similarity index 100% rename from pike/step2_eval.pike rename to impls/pike/step2_eval.pike diff --git a/pike/step3_env.pike b/impls/pike/step3_env.pike similarity index 100% rename from pike/step3_env.pike rename to impls/pike/step3_env.pike diff --git a/pike/step4_if_fn_do.pike b/impls/pike/step4_if_fn_do.pike similarity index 100% rename from pike/step4_if_fn_do.pike rename to impls/pike/step4_if_fn_do.pike diff --git a/pike/step5_tco.pike b/impls/pike/step5_tco.pike similarity index 100% rename from pike/step5_tco.pike rename to impls/pike/step5_tco.pike diff --git a/pike/step6_file.pike b/impls/pike/step6_file.pike similarity index 100% rename from pike/step6_file.pike rename to impls/pike/step6_file.pike diff --git a/pike/step7_quote.pike b/impls/pike/step7_quote.pike similarity index 100% rename from pike/step7_quote.pike rename to impls/pike/step7_quote.pike diff --git a/pike/step8_macros.pike b/impls/pike/step8_macros.pike similarity index 100% rename from pike/step8_macros.pike rename to impls/pike/step8_macros.pike diff --git a/pike/step9_try.pike b/impls/pike/step9_try.pike similarity index 100% rename from pike/step9_try.pike rename to impls/pike/step9_try.pike diff --git a/pike/stepA_mal.pike b/impls/pike/stepA_mal.pike similarity index 100% rename from pike/stepA_mal.pike rename to impls/pike/stepA_mal.pike diff --git a/pike/tests/step5_tco.mal b/impls/pike/tests/step5_tco.mal similarity index 100% rename from pike/tests/step5_tco.mal rename to impls/pike/tests/step5_tco.mal diff --git a/pike/tests/stepA_mal.mal b/impls/pike/tests/stepA_mal.mal similarity index 100% rename from pike/tests/stepA_mal.mal rename to impls/pike/tests/stepA_mal.mal diff --git a/plpgsql/Dockerfile b/impls/plpgsql/Dockerfile similarity index 100% rename from plpgsql/Dockerfile rename to impls/plpgsql/Dockerfile diff --git a/plpgsql/Makefile b/impls/plpgsql/Makefile similarity index 100% rename from plpgsql/Makefile rename to impls/plpgsql/Makefile diff --git a/plpgsql/core.sql b/impls/plpgsql/core.sql similarity index 100% rename from plpgsql/core.sql rename to impls/plpgsql/core.sql diff --git a/plpgsql/entrypoint.sh b/impls/plpgsql/entrypoint.sh similarity index 100% rename from plpgsql/entrypoint.sh rename to impls/plpgsql/entrypoint.sh diff --git a/plpgsql/envs.sql b/impls/plpgsql/envs.sql similarity index 100% rename from plpgsql/envs.sql rename to impls/plpgsql/envs.sql diff --git a/plpgsql/init.sql b/impls/plpgsql/init.sql similarity index 100% rename from plpgsql/init.sql rename to impls/plpgsql/init.sql diff --git a/plpgsql/io.sql b/impls/plpgsql/io.sql similarity index 100% rename from plpgsql/io.sql rename to impls/plpgsql/io.sql diff --git a/plpgsql/printer.sql b/impls/plpgsql/printer.sql similarity index 100% rename from plpgsql/printer.sql rename to impls/plpgsql/printer.sql diff --git a/plpgsql/reader.sql b/impls/plpgsql/reader.sql similarity index 100% rename from plpgsql/reader.sql rename to impls/plpgsql/reader.sql diff --git a/plpgsql/run b/impls/plpgsql/run similarity index 100% rename from plpgsql/run rename to impls/plpgsql/run diff --git a/plpgsql/step0_repl.sql b/impls/plpgsql/step0_repl.sql similarity index 100% rename from plpgsql/step0_repl.sql rename to impls/plpgsql/step0_repl.sql diff --git a/plpgsql/step1_read_print.sql b/impls/plpgsql/step1_read_print.sql similarity index 100% rename from plpgsql/step1_read_print.sql rename to impls/plpgsql/step1_read_print.sql diff --git a/plpgsql/step2_eval.sql b/impls/plpgsql/step2_eval.sql similarity index 100% rename from plpgsql/step2_eval.sql rename to impls/plpgsql/step2_eval.sql diff --git a/plpgsql/step3_env.sql b/impls/plpgsql/step3_env.sql similarity index 100% rename from plpgsql/step3_env.sql rename to impls/plpgsql/step3_env.sql diff --git a/plpgsql/step4_if_fn_do.sql b/impls/plpgsql/step4_if_fn_do.sql similarity index 100% rename from plpgsql/step4_if_fn_do.sql rename to impls/plpgsql/step4_if_fn_do.sql diff --git a/plpgsql/step5_tco.sql b/impls/plpgsql/step5_tco.sql similarity index 100% rename from plpgsql/step5_tco.sql rename to impls/plpgsql/step5_tco.sql diff --git a/plpgsql/step6_file.sql b/impls/plpgsql/step6_file.sql similarity index 100% rename from plpgsql/step6_file.sql rename to impls/plpgsql/step6_file.sql diff --git a/plpgsql/step7_quote.sql b/impls/plpgsql/step7_quote.sql similarity index 100% rename from plpgsql/step7_quote.sql rename to impls/plpgsql/step7_quote.sql diff --git a/plpgsql/step8_macros.sql b/impls/plpgsql/step8_macros.sql similarity index 100% rename from plpgsql/step8_macros.sql rename to impls/plpgsql/step8_macros.sql diff --git a/plpgsql/step9_try.sql b/impls/plpgsql/step9_try.sql similarity index 100% rename from plpgsql/step9_try.sql rename to impls/plpgsql/step9_try.sql diff --git a/plpgsql/stepA_mal.sql b/impls/plpgsql/stepA_mal.sql similarity index 100% rename from plpgsql/stepA_mal.sql rename to impls/plpgsql/stepA_mal.sql diff --git a/plpgsql/types.sql b/impls/plpgsql/types.sql similarity index 100% rename from plpgsql/types.sql rename to impls/plpgsql/types.sql diff --git a/plpgsql/wrap.sh b/impls/plpgsql/wrap.sh similarity index 100% rename from plpgsql/wrap.sh rename to impls/plpgsql/wrap.sh diff --git a/plsql/Dockerfile b/impls/plsql/Dockerfile similarity index 100% rename from plsql/Dockerfile rename to impls/plsql/Dockerfile diff --git a/plsql/Dockerfile-oracle b/impls/plsql/Dockerfile-oracle similarity index 100% rename from plsql/Dockerfile-oracle rename to impls/plsql/Dockerfile-oracle diff --git a/plsql/Dockerfile-postgres b/impls/plsql/Dockerfile-postgres similarity index 100% rename from plsql/Dockerfile-postgres rename to impls/plsql/Dockerfile-postgres diff --git a/plsql/Makefile b/impls/plsql/Makefile similarity index 100% rename from plsql/Makefile rename to impls/plsql/Makefile diff --git a/plsql/core.sql b/impls/plsql/core.sql similarity index 100% rename from plsql/core.sql rename to impls/plsql/core.sql diff --git a/plsql/entrypoint.sh b/impls/plsql/entrypoint.sh similarity index 100% rename from plsql/entrypoint.sh rename to impls/plsql/entrypoint.sh diff --git a/plsql/env.sql b/impls/plsql/env.sql similarity index 100% rename from plsql/env.sql rename to impls/plsql/env.sql diff --git a/plsql/io.sql b/impls/plsql/io.sql similarity index 100% rename from plsql/io.sql rename to impls/plsql/io.sql diff --git a/plsql/login.sql b/impls/plsql/login.sql similarity index 100% rename from plsql/login.sql rename to impls/plsql/login.sql diff --git a/plsql/printer.sql b/impls/plsql/printer.sql similarity index 100% rename from plsql/printer.sql rename to impls/plsql/printer.sql diff --git a/plsql/reader.sql b/impls/plsql/reader.sql similarity index 100% rename from plsql/reader.sql rename to impls/plsql/reader.sql diff --git a/plsql/run b/impls/plsql/run similarity index 100% rename from plsql/run rename to impls/plsql/run diff --git a/plsql/step0_repl.sql b/impls/plsql/step0_repl.sql similarity index 100% rename from plsql/step0_repl.sql rename to impls/plsql/step0_repl.sql diff --git a/plsql/step1_read_print.sql b/impls/plsql/step1_read_print.sql similarity index 100% rename from plsql/step1_read_print.sql rename to impls/plsql/step1_read_print.sql diff --git a/plsql/step2_eval.sql b/impls/plsql/step2_eval.sql similarity index 100% rename from plsql/step2_eval.sql rename to impls/plsql/step2_eval.sql diff --git a/plsql/step3_env.sql b/impls/plsql/step3_env.sql similarity index 100% rename from plsql/step3_env.sql rename to impls/plsql/step3_env.sql diff --git a/plsql/step4_if_fn_do.sql b/impls/plsql/step4_if_fn_do.sql similarity index 100% rename from plsql/step4_if_fn_do.sql rename to impls/plsql/step4_if_fn_do.sql diff --git a/plsql/step5_tco.sql b/impls/plsql/step5_tco.sql similarity index 100% rename from plsql/step5_tco.sql rename to impls/plsql/step5_tco.sql diff --git a/plsql/step6_file.sql b/impls/plsql/step6_file.sql similarity index 100% rename from plsql/step6_file.sql rename to impls/plsql/step6_file.sql diff --git a/plsql/step7_quote.sql b/impls/plsql/step7_quote.sql similarity index 100% rename from plsql/step7_quote.sql rename to impls/plsql/step7_quote.sql diff --git a/plsql/step8_macros.sql b/impls/plsql/step8_macros.sql similarity index 100% rename from plsql/step8_macros.sql rename to impls/plsql/step8_macros.sql diff --git a/plsql/step9_try.sql b/impls/plsql/step9_try.sql similarity index 100% rename from plsql/step9_try.sql rename to impls/plsql/step9_try.sql diff --git a/plsql/stepA_mal.sql b/impls/plsql/stepA_mal.sql similarity index 100% rename from plsql/stepA_mal.sql rename to impls/plsql/stepA_mal.sql diff --git a/plsql/types.sql b/impls/plsql/types.sql similarity index 100% rename from plsql/types.sql rename to impls/plsql/types.sql diff --git a/plsql/wrap.sh b/impls/plsql/wrap.sh similarity index 100% rename from plsql/wrap.sh rename to impls/plsql/wrap.sh diff --git a/powershell/Dockerfile b/impls/powershell/Dockerfile similarity index 100% rename from powershell/Dockerfile rename to impls/powershell/Dockerfile diff --git a/powershell/Makefile b/impls/powershell/Makefile similarity index 100% rename from powershell/Makefile rename to impls/powershell/Makefile diff --git a/powershell/core.psm1 b/impls/powershell/core.psm1 similarity index 100% rename from powershell/core.psm1 rename to impls/powershell/core.psm1 diff --git a/powershell/env.psm1 b/impls/powershell/env.psm1 similarity index 100% rename from powershell/env.psm1 rename to impls/powershell/env.psm1 diff --git a/powershell/printer.psm1 b/impls/powershell/printer.psm1 similarity index 100% rename from powershell/printer.psm1 rename to impls/powershell/printer.psm1 diff --git a/powershell/reader.psm1 b/impls/powershell/reader.psm1 similarity index 100% rename from powershell/reader.psm1 rename to impls/powershell/reader.psm1 diff --git a/powershell/run b/impls/powershell/run similarity index 100% rename from powershell/run rename to impls/powershell/run diff --git a/powershell/step0_repl.ps1 b/impls/powershell/step0_repl.ps1 similarity index 100% rename from powershell/step0_repl.ps1 rename to impls/powershell/step0_repl.ps1 diff --git a/powershell/step1_read_print.ps1 b/impls/powershell/step1_read_print.ps1 similarity index 100% rename from powershell/step1_read_print.ps1 rename to impls/powershell/step1_read_print.ps1 diff --git a/powershell/step2_eval.ps1 b/impls/powershell/step2_eval.ps1 similarity index 100% rename from powershell/step2_eval.ps1 rename to impls/powershell/step2_eval.ps1 diff --git a/powershell/step3_env.ps1 b/impls/powershell/step3_env.ps1 similarity index 100% rename from powershell/step3_env.ps1 rename to impls/powershell/step3_env.ps1 diff --git a/powershell/step4_if_fn_do.ps1 b/impls/powershell/step4_if_fn_do.ps1 similarity index 100% rename from powershell/step4_if_fn_do.ps1 rename to impls/powershell/step4_if_fn_do.ps1 diff --git a/powershell/step5_tco.ps1 b/impls/powershell/step5_tco.ps1 similarity index 100% rename from powershell/step5_tco.ps1 rename to impls/powershell/step5_tco.ps1 diff --git a/powershell/step6_file.ps1 b/impls/powershell/step6_file.ps1 similarity index 100% rename from powershell/step6_file.ps1 rename to impls/powershell/step6_file.ps1 diff --git a/powershell/step7_quote.ps1 b/impls/powershell/step7_quote.ps1 similarity index 100% rename from powershell/step7_quote.ps1 rename to impls/powershell/step7_quote.ps1 diff --git a/powershell/step8_macros.ps1 b/impls/powershell/step8_macros.ps1 similarity index 100% rename from powershell/step8_macros.ps1 rename to impls/powershell/step8_macros.ps1 diff --git a/powershell/step9_try.ps1 b/impls/powershell/step9_try.ps1 similarity index 100% rename from powershell/step9_try.ps1 rename to impls/powershell/step9_try.ps1 diff --git a/powershell/stepA_mal.ps1 b/impls/powershell/stepA_mal.ps1 similarity index 100% rename from powershell/stepA_mal.ps1 rename to impls/powershell/stepA_mal.ps1 diff --git a/powershell/types.psm1 b/impls/powershell/types.psm1 similarity index 100% rename from powershell/types.psm1 rename to impls/powershell/types.psm1 diff --git a/ps/Dockerfile b/impls/ps/Dockerfile similarity index 100% rename from ps/Dockerfile rename to impls/ps/Dockerfile diff --git a/ps/Makefile b/impls/ps/Makefile similarity index 100% rename from ps/Makefile rename to impls/ps/Makefile diff --git a/ps/core.ps b/impls/ps/core.ps similarity index 100% rename from ps/core.ps rename to impls/ps/core.ps diff --git a/ps/env.ps b/impls/ps/env.ps similarity index 100% rename from ps/env.ps rename to impls/ps/env.ps diff --git a/ps/interop.ps b/impls/ps/interop.ps similarity index 100% rename from ps/interop.ps rename to impls/ps/interop.ps diff --git a/ps/printer.ps b/impls/ps/printer.ps similarity index 100% rename from ps/printer.ps rename to impls/ps/printer.ps diff --git a/ps/reader.ps b/impls/ps/reader.ps similarity index 100% rename from ps/reader.ps rename to impls/ps/reader.ps diff --git a/ps/run b/impls/ps/run similarity index 100% rename from ps/run rename to impls/ps/run diff --git a/ps/step0_repl.ps b/impls/ps/step0_repl.ps similarity index 100% rename from ps/step0_repl.ps rename to impls/ps/step0_repl.ps diff --git a/ps/step1_read_print.ps b/impls/ps/step1_read_print.ps similarity index 100% rename from ps/step1_read_print.ps rename to impls/ps/step1_read_print.ps diff --git a/ps/step2_eval.ps b/impls/ps/step2_eval.ps similarity index 100% rename from ps/step2_eval.ps rename to impls/ps/step2_eval.ps diff --git a/ps/step3_env.ps b/impls/ps/step3_env.ps similarity index 100% rename from ps/step3_env.ps rename to impls/ps/step3_env.ps diff --git a/ps/step4_if_fn_do.ps b/impls/ps/step4_if_fn_do.ps similarity index 100% rename from ps/step4_if_fn_do.ps rename to impls/ps/step4_if_fn_do.ps diff --git a/ps/step5_tco.ps b/impls/ps/step5_tco.ps similarity index 100% rename from ps/step5_tco.ps rename to impls/ps/step5_tco.ps diff --git a/ps/step6_file.ps b/impls/ps/step6_file.ps similarity index 100% rename from ps/step6_file.ps rename to impls/ps/step6_file.ps diff --git a/ps/step7_quote.ps b/impls/ps/step7_quote.ps similarity index 100% rename from ps/step7_quote.ps rename to impls/ps/step7_quote.ps diff --git a/ps/step8_macros.ps b/impls/ps/step8_macros.ps similarity index 100% rename from ps/step8_macros.ps rename to impls/ps/step8_macros.ps diff --git a/ps/step9_try.ps b/impls/ps/step9_try.ps similarity index 100% rename from ps/step9_try.ps rename to impls/ps/step9_try.ps diff --git a/ps/stepA_mal.ps b/impls/ps/stepA_mal.ps similarity index 100% rename from ps/stepA_mal.ps rename to impls/ps/stepA_mal.ps diff --git a/ps/tests/step5_tco.mal b/impls/ps/tests/step5_tco.mal similarity index 100% rename from ps/tests/step5_tco.mal rename to impls/ps/tests/step5_tco.mal diff --git a/ps/tests/stepA_mal.mal b/impls/ps/tests/stepA_mal.mal similarity index 100% rename from ps/tests/stepA_mal.mal rename to impls/ps/tests/stepA_mal.mal diff --git a/ps/types.ps b/impls/ps/types.ps similarity index 100% rename from ps/types.ps rename to impls/ps/types.ps diff --git a/python.2/.gitignore b/impls/python.2/.gitignore similarity index 100% rename from python.2/.gitignore rename to impls/python.2/.gitignore diff --git a/python.2/Dockerfile b/impls/python.2/Dockerfile similarity index 100% rename from python.2/Dockerfile rename to impls/python.2/Dockerfile diff --git a/python.2/Makefile b/impls/python.2/Makefile similarity index 100% rename from python.2/Makefile rename to impls/python.2/Makefile diff --git a/python.2/core.py b/impls/python.2/core.py similarity index 100% rename from python.2/core.py rename to impls/python.2/core.py diff --git a/python.2/env.py b/impls/python.2/env.py similarity index 100% rename from python.2/env.py rename to impls/python.2/env.py diff --git a/python.2/mal_types.py b/impls/python.2/mal_types.py similarity index 100% rename from python.2/mal_types.py rename to impls/python.2/mal_types.py diff --git a/python.2/reader.py b/impls/python.2/reader.py similarity index 100% rename from python.2/reader.py rename to impls/python.2/reader.py diff --git a/python.2/run b/impls/python.2/run similarity index 100% rename from python.2/run rename to impls/python.2/run diff --git a/python.2/step0_repl.py b/impls/python.2/step0_repl.py similarity index 100% rename from python.2/step0_repl.py rename to impls/python.2/step0_repl.py diff --git a/python.2/step1_read_print.py b/impls/python.2/step1_read_print.py similarity index 100% rename from python.2/step1_read_print.py rename to impls/python.2/step1_read_print.py diff --git a/python.2/step2_eval.py b/impls/python.2/step2_eval.py similarity index 100% rename from python.2/step2_eval.py rename to impls/python.2/step2_eval.py diff --git a/python.2/step3_env.py b/impls/python.2/step3_env.py similarity index 100% rename from python.2/step3_env.py rename to impls/python.2/step3_env.py diff --git a/python.2/step4_if_fn_do.py b/impls/python.2/step4_if_fn_do.py similarity index 100% rename from python.2/step4_if_fn_do.py rename to impls/python.2/step4_if_fn_do.py diff --git a/python.2/step5_tco.py b/impls/python.2/step5_tco.py similarity index 100% rename from python.2/step5_tco.py rename to impls/python.2/step5_tco.py diff --git a/python.2/step6_file.py b/impls/python.2/step6_file.py similarity index 100% rename from python.2/step6_file.py rename to impls/python.2/step6_file.py diff --git a/python.2/step7_quote.py b/impls/python.2/step7_quote.py similarity index 100% rename from python.2/step7_quote.py rename to impls/python.2/step7_quote.py diff --git a/python.2/step8_macros.py b/impls/python.2/step8_macros.py similarity index 100% rename from python.2/step8_macros.py rename to impls/python.2/step8_macros.py diff --git a/python.2/step9_try.py b/impls/python.2/step9_try.py similarity index 100% rename from python.2/step9_try.py rename to impls/python.2/step9_try.py diff --git a/python.2/stepA_mal.py b/impls/python.2/stepA_mal.py similarity index 100% rename from python.2/stepA_mal.py rename to impls/python.2/stepA_mal.py diff --git a/python.2/tests/__init__.py b/impls/python.2/tests/__init__.py similarity index 100% rename from python.2/tests/__init__.py rename to impls/python.2/tests/__init__.py diff --git a/python.2/tests/test_step2.py b/impls/python.2/tests/test_step2.py similarity index 100% rename from python.2/tests/test_step2.py rename to impls/python.2/tests/test_step2.py diff --git a/python.2/tests/test_step3.py b/impls/python.2/tests/test_step3.py similarity index 100% rename from python.2/tests/test_step3.py rename to impls/python.2/tests/test_step3.py diff --git a/python.2/tests/test_step4.py b/impls/python.2/tests/test_step4.py similarity index 100% rename from python.2/tests/test_step4.py rename to impls/python.2/tests/test_step4.py diff --git a/python.2/tests/test_step5.py b/impls/python.2/tests/test_step5.py similarity index 100% rename from python.2/tests/test_step5.py rename to impls/python.2/tests/test_step5.py diff --git a/python.2/tests/test_step6.py b/impls/python.2/tests/test_step6.py similarity index 100% rename from python.2/tests/test_step6.py rename to impls/python.2/tests/test_step6.py diff --git a/python.2/tests/test_step7.py b/impls/python.2/tests/test_step7.py similarity index 100% rename from python.2/tests/test_step7.py rename to impls/python.2/tests/test_step7.py diff --git a/python.2/tests/test_step8.py b/impls/python.2/tests/test_step8.py similarity index 100% rename from python.2/tests/test_step8.py rename to impls/python.2/tests/test_step8.py diff --git a/python.2/tests/test_step9.py b/impls/python.2/tests/test_step9.py similarity index 100% rename from python.2/tests/test_step9.py rename to impls/python.2/tests/test_step9.py diff --git a/python.2/tests/test_stepA.py b/impls/python.2/tests/test_stepA.py similarity index 100% rename from python.2/tests/test_stepA.py rename to impls/python.2/tests/test_stepA.py diff --git a/python/Dockerfile b/impls/python/Dockerfile similarity index 100% rename from python/Dockerfile rename to impls/python/Dockerfile diff --git a/python/Makefile b/impls/python/Makefile similarity index 100% rename from python/Makefile rename to impls/python/Makefile diff --git a/python/core.py b/impls/python/core.py similarity index 100% rename from python/core.py rename to impls/python/core.py diff --git a/python/env.py b/impls/python/env.py similarity index 100% rename from python/env.py rename to impls/python/env.py diff --git a/python/mal_readline.py b/impls/python/mal_readline.py similarity index 100% rename from python/mal_readline.py rename to impls/python/mal_readline.py diff --git a/python/mal_types.py b/impls/python/mal_types.py similarity index 100% rename from python/mal_types.py rename to impls/python/mal_types.py diff --git a/python/printer.py b/impls/python/printer.py similarity index 100% rename from python/printer.py rename to impls/python/printer.py diff --git a/python/reader.py b/impls/python/reader.py similarity index 100% rename from python/reader.py rename to impls/python/reader.py diff --git a/python/run b/impls/python/run similarity index 100% rename from python/run rename to impls/python/run diff --git a/python/step0_repl.py b/impls/python/step0_repl.py similarity index 100% rename from python/step0_repl.py rename to impls/python/step0_repl.py diff --git a/python/step1_read_print.py b/impls/python/step1_read_print.py similarity index 100% rename from python/step1_read_print.py rename to impls/python/step1_read_print.py diff --git a/python/step2_eval.py b/impls/python/step2_eval.py similarity index 100% rename from python/step2_eval.py rename to impls/python/step2_eval.py diff --git a/python/step3_env.py b/impls/python/step3_env.py similarity index 100% rename from python/step3_env.py rename to impls/python/step3_env.py diff --git a/python/step4_if_fn_do.py b/impls/python/step4_if_fn_do.py similarity index 100% rename from python/step4_if_fn_do.py rename to impls/python/step4_if_fn_do.py diff --git a/python/step5_tco.py b/impls/python/step5_tco.py similarity index 100% rename from python/step5_tco.py rename to impls/python/step5_tco.py diff --git a/python/step6_file.py b/impls/python/step6_file.py similarity index 100% rename from python/step6_file.py rename to impls/python/step6_file.py diff --git a/python/step7_quote.py b/impls/python/step7_quote.py similarity index 100% rename from python/step7_quote.py rename to impls/python/step7_quote.py diff --git a/python/step8_macros.py b/impls/python/step8_macros.py similarity index 100% rename from python/step8_macros.py rename to impls/python/step8_macros.py diff --git a/python/step9_try.py b/impls/python/step9_try.py similarity index 100% rename from python/step9_try.py rename to impls/python/step9_try.py diff --git a/python/stepA_mal.py b/impls/python/stepA_mal.py similarity index 100% rename from python/stepA_mal.py rename to impls/python/stepA_mal.py diff --git a/python/tests/step5_tco.mal b/impls/python/tests/step5_tco.mal similarity index 100% rename from python/tests/step5_tco.mal rename to impls/python/tests/step5_tco.mal diff --git a/python/tests/stepA_mal.mal b/impls/python/tests/stepA_mal.mal similarity index 100% rename from python/tests/stepA_mal.mal rename to impls/python/tests/stepA_mal.mal diff --git a/r/Dockerfile b/impls/r/Dockerfile similarity index 100% rename from r/Dockerfile rename to impls/r/Dockerfile diff --git a/r/Makefile b/impls/r/Makefile similarity index 100% rename from r/Makefile rename to impls/r/Makefile diff --git a/r/core.r b/impls/r/core.r similarity index 100% rename from r/core.r rename to impls/r/core.r diff --git a/r/env.r b/impls/r/env.r similarity index 100% rename from r/env.r rename to impls/r/env.r diff --git a/r/printer.r b/impls/r/printer.r similarity index 100% rename from r/printer.r rename to impls/r/printer.r diff --git a/r/reader.r b/impls/r/reader.r similarity index 100% rename from r/reader.r rename to impls/r/reader.r diff --git a/r/readline.r b/impls/r/readline.r similarity index 100% rename from r/readline.r rename to impls/r/readline.r diff --git a/r/run b/impls/r/run similarity index 100% rename from r/run rename to impls/r/run diff --git a/r/step0_repl.r b/impls/r/step0_repl.r similarity index 100% rename from r/step0_repl.r rename to impls/r/step0_repl.r diff --git a/r/step1_read_print.r b/impls/r/step1_read_print.r similarity index 100% rename from r/step1_read_print.r rename to impls/r/step1_read_print.r diff --git a/r/step2_eval.r b/impls/r/step2_eval.r similarity index 100% rename from r/step2_eval.r rename to impls/r/step2_eval.r diff --git a/r/step3_env.r b/impls/r/step3_env.r similarity index 100% rename from r/step3_env.r rename to impls/r/step3_env.r diff --git a/r/step4_if_fn_do.r b/impls/r/step4_if_fn_do.r similarity index 100% rename from r/step4_if_fn_do.r rename to impls/r/step4_if_fn_do.r diff --git a/r/step5_tco.r b/impls/r/step5_tco.r similarity index 100% rename from r/step5_tco.r rename to impls/r/step5_tco.r diff --git a/r/step6_file.r b/impls/r/step6_file.r similarity index 100% rename from r/step6_file.r rename to impls/r/step6_file.r diff --git a/r/step7_quote.r b/impls/r/step7_quote.r similarity index 100% rename from r/step7_quote.r rename to impls/r/step7_quote.r diff --git a/r/step8_macros.r b/impls/r/step8_macros.r similarity index 100% rename from r/step8_macros.r rename to impls/r/step8_macros.r diff --git a/r/step9_try.r b/impls/r/step9_try.r similarity index 100% rename from r/step9_try.r rename to impls/r/step9_try.r diff --git a/r/stepA_mal.r b/impls/r/stepA_mal.r similarity index 100% rename from r/stepA_mal.r rename to impls/r/stepA_mal.r diff --git a/r/tests/step5_tco.mal b/impls/r/tests/step5_tco.mal similarity index 100% rename from r/tests/step5_tco.mal rename to impls/r/tests/step5_tco.mal diff --git a/r/types.r b/impls/r/types.r similarity index 100% rename from r/types.r rename to impls/r/types.r diff --git a/racket/Dockerfile b/impls/racket/Dockerfile similarity index 100% rename from racket/Dockerfile rename to impls/racket/Dockerfile diff --git a/racket/Makefile b/impls/racket/Makefile similarity index 100% rename from racket/Makefile rename to impls/racket/Makefile diff --git a/racket/core.rkt b/impls/racket/core.rkt similarity index 100% rename from racket/core.rkt rename to impls/racket/core.rkt diff --git a/racket/env.rkt b/impls/racket/env.rkt similarity index 100% rename from racket/env.rkt rename to impls/racket/env.rkt diff --git a/racket/printer.rkt b/impls/racket/printer.rkt similarity index 100% rename from racket/printer.rkt rename to impls/racket/printer.rkt diff --git a/racket/reader.rkt b/impls/racket/reader.rkt similarity index 100% rename from racket/reader.rkt rename to impls/racket/reader.rkt diff --git a/racket/readline.rkt b/impls/racket/readline.rkt similarity index 100% rename from racket/readline.rkt rename to impls/racket/readline.rkt diff --git a/racket/run b/impls/racket/run similarity index 100% rename from racket/run rename to impls/racket/run diff --git a/racket/step0_repl.rkt b/impls/racket/step0_repl.rkt similarity index 100% rename from racket/step0_repl.rkt rename to impls/racket/step0_repl.rkt diff --git a/racket/step1_read_print.rkt b/impls/racket/step1_read_print.rkt similarity index 100% rename from racket/step1_read_print.rkt rename to impls/racket/step1_read_print.rkt diff --git a/racket/step2_eval.rkt b/impls/racket/step2_eval.rkt similarity index 100% rename from racket/step2_eval.rkt rename to impls/racket/step2_eval.rkt diff --git a/racket/step3_env.rkt b/impls/racket/step3_env.rkt similarity index 100% rename from racket/step3_env.rkt rename to impls/racket/step3_env.rkt diff --git a/racket/step4_if_fn_do.rkt b/impls/racket/step4_if_fn_do.rkt similarity index 100% rename from racket/step4_if_fn_do.rkt rename to impls/racket/step4_if_fn_do.rkt diff --git a/racket/step5_tco.rkt b/impls/racket/step5_tco.rkt similarity index 100% rename from racket/step5_tco.rkt rename to impls/racket/step5_tco.rkt diff --git a/racket/step6_file.rkt b/impls/racket/step6_file.rkt similarity index 100% rename from racket/step6_file.rkt rename to impls/racket/step6_file.rkt diff --git a/racket/step7_quote.rkt b/impls/racket/step7_quote.rkt similarity index 100% rename from racket/step7_quote.rkt rename to impls/racket/step7_quote.rkt diff --git a/racket/step8_macros.rkt b/impls/racket/step8_macros.rkt similarity index 100% rename from racket/step8_macros.rkt rename to impls/racket/step8_macros.rkt diff --git a/racket/step9_try.rkt b/impls/racket/step9_try.rkt similarity index 100% rename from racket/step9_try.rkt rename to impls/racket/step9_try.rkt diff --git a/racket/stepA_mal.rkt b/impls/racket/stepA_mal.rkt similarity index 100% rename from racket/stepA_mal.rkt rename to impls/racket/stepA_mal.rkt diff --git a/racket/tests/step5_tco.mal b/impls/racket/tests/step5_tco.mal similarity index 100% rename from racket/tests/step5_tco.mal rename to impls/racket/tests/step5_tco.mal diff --git a/racket/types.rkt b/impls/racket/types.rkt similarity index 100% rename from racket/types.rkt rename to impls/racket/types.rkt diff --git a/rexx/.gitignore b/impls/rexx/.gitignore similarity index 100% rename from rexx/.gitignore rename to impls/rexx/.gitignore diff --git a/rexx/Dockerfile b/impls/rexx/Dockerfile similarity index 100% rename from rexx/Dockerfile rename to impls/rexx/Dockerfile diff --git a/rexx/Makefile b/impls/rexx/Makefile similarity index 100% rename from rexx/Makefile rename to impls/rexx/Makefile diff --git a/rexx/core.rexx b/impls/rexx/core.rexx similarity index 100% rename from rexx/core.rexx rename to impls/rexx/core.rexx diff --git a/rexx/env.rexx b/impls/rexx/env.rexx similarity index 100% rename from rexx/env.rexx rename to impls/rexx/env.rexx diff --git a/rexx/printer.rexx b/impls/rexx/printer.rexx similarity index 100% rename from rexx/printer.rexx rename to impls/rexx/printer.rexx diff --git a/rexx/reader.rexx b/impls/rexx/reader.rexx similarity index 100% rename from rexx/reader.rexx rename to impls/rexx/reader.rexx diff --git a/rexx/readline.rexx b/impls/rexx/readline.rexx similarity index 100% rename from rexx/readline.rexx rename to impls/rexx/readline.rexx diff --git a/rexx/run b/impls/rexx/run similarity index 100% rename from rexx/run rename to impls/rexx/run diff --git a/rexx/step0_repl.rexx b/impls/rexx/step0_repl.rexx similarity index 100% rename from rexx/step0_repl.rexx rename to impls/rexx/step0_repl.rexx diff --git a/rexx/step1_read_print.rexx b/impls/rexx/step1_read_print.rexx similarity index 100% rename from rexx/step1_read_print.rexx rename to impls/rexx/step1_read_print.rexx diff --git a/rexx/step2_eval.rexx b/impls/rexx/step2_eval.rexx similarity index 100% rename from rexx/step2_eval.rexx rename to impls/rexx/step2_eval.rexx diff --git a/rexx/step3_env.rexx b/impls/rexx/step3_env.rexx similarity index 100% rename from rexx/step3_env.rexx rename to impls/rexx/step3_env.rexx diff --git a/rexx/step4_if_fn_do.rexx b/impls/rexx/step4_if_fn_do.rexx similarity index 100% rename from rexx/step4_if_fn_do.rexx rename to impls/rexx/step4_if_fn_do.rexx diff --git a/rexx/step5_tco.rexx b/impls/rexx/step5_tco.rexx similarity index 100% rename from rexx/step5_tco.rexx rename to impls/rexx/step5_tco.rexx diff --git a/rexx/step6_file.rexx b/impls/rexx/step6_file.rexx similarity index 100% rename from rexx/step6_file.rexx rename to impls/rexx/step6_file.rexx diff --git a/rexx/step7_quote.rexx b/impls/rexx/step7_quote.rexx similarity index 100% rename from rexx/step7_quote.rexx rename to impls/rexx/step7_quote.rexx diff --git a/rexx/step8_macros.rexx b/impls/rexx/step8_macros.rexx similarity index 100% rename from rexx/step8_macros.rexx rename to impls/rexx/step8_macros.rexx diff --git a/rexx/step9_try.rexx b/impls/rexx/step9_try.rexx similarity index 100% rename from rexx/step9_try.rexx rename to impls/rexx/step9_try.rexx diff --git a/rexx/stepA_mal.rexx b/impls/rexx/stepA_mal.rexx similarity index 100% rename from rexx/stepA_mal.rexx rename to impls/rexx/stepA_mal.rexx diff --git a/rexx/tests/step5_tco.mal b/impls/rexx/tests/step5_tco.mal similarity index 100% rename from rexx/tests/step5_tco.mal rename to impls/rexx/tests/step5_tco.mal diff --git a/rexx/tests/stepA_mal.mal b/impls/rexx/tests/stepA_mal.mal similarity index 100% rename from rexx/tests/stepA_mal.mal rename to impls/rexx/tests/stepA_mal.mal diff --git a/rexx/types.rexx b/impls/rexx/types.rexx similarity index 100% rename from rexx/types.rexx rename to impls/rexx/types.rexx diff --git a/rpython/Dockerfile b/impls/rpython/Dockerfile similarity index 100% rename from rpython/Dockerfile rename to impls/rpython/Dockerfile diff --git a/rpython/Makefile b/impls/rpython/Makefile similarity index 100% rename from rpython/Makefile rename to impls/rpython/Makefile diff --git a/rpython/core.py b/impls/rpython/core.py similarity index 100% rename from rpython/core.py rename to impls/rpython/core.py diff --git a/rpython/env.py b/impls/rpython/env.py similarity index 100% rename from rpython/env.py rename to impls/rpython/env.py diff --git a/rpython/mal_readline.py b/impls/rpython/mal_readline.py similarity index 100% rename from rpython/mal_readline.py rename to impls/rpython/mal_readline.py diff --git a/rpython/mal_types.py b/impls/rpython/mal_types.py similarity index 100% rename from rpython/mal_types.py rename to impls/rpython/mal_types.py diff --git a/rpython/printer.py b/impls/rpython/printer.py similarity index 100% rename from rpython/printer.py rename to impls/rpython/printer.py diff --git a/rpython/reader.py b/impls/rpython/reader.py similarity index 100% rename from rpython/reader.py rename to impls/rpython/reader.py diff --git a/rpython/run b/impls/rpython/run similarity index 100% rename from rpython/run rename to impls/rpython/run diff --git a/rpython/step0_repl.py b/impls/rpython/step0_repl.py similarity index 100% rename from rpython/step0_repl.py rename to impls/rpython/step0_repl.py diff --git a/rpython/step1_read_print.py b/impls/rpython/step1_read_print.py similarity index 100% rename from rpython/step1_read_print.py rename to impls/rpython/step1_read_print.py diff --git a/rpython/step2_eval.py b/impls/rpython/step2_eval.py similarity index 100% rename from rpython/step2_eval.py rename to impls/rpython/step2_eval.py diff --git a/rpython/step3_env.py b/impls/rpython/step3_env.py similarity index 100% rename from rpython/step3_env.py rename to impls/rpython/step3_env.py diff --git a/rpython/step4_if_fn_do.py b/impls/rpython/step4_if_fn_do.py similarity index 100% rename from rpython/step4_if_fn_do.py rename to impls/rpython/step4_if_fn_do.py diff --git a/rpython/step5_tco.py b/impls/rpython/step5_tco.py similarity index 100% rename from rpython/step5_tco.py rename to impls/rpython/step5_tco.py diff --git a/rpython/step6_file.py b/impls/rpython/step6_file.py similarity index 100% rename from rpython/step6_file.py rename to impls/rpython/step6_file.py diff --git a/rpython/step7_quote.py b/impls/rpython/step7_quote.py similarity index 100% rename from rpython/step7_quote.py rename to impls/rpython/step7_quote.py diff --git a/rpython/step8_macros.py b/impls/rpython/step8_macros.py similarity index 100% rename from rpython/step8_macros.py rename to impls/rpython/step8_macros.py diff --git a/rpython/step9_try.py b/impls/rpython/step9_try.py similarity index 100% rename from rpython/step9_try.py rename to impls/rpython/step9_try.py diff --git a/rpython/stepA_mal.py b/impls/rpython/stepA_mal.py similarity index 100% rename from rpython/stepA_mal.py rename to impls/rpython/stepA_mal.py diff --git a/rpython/tests/step5_tco.mal b/impls/rpython/tests/step5_tco.mal similarity index 100% rename from rpython/tests/step5_tco.mal rename to impls/rpython/tests/step5_tco.mal diff --git a/ruby/Dockerfile b/impls/ruby/Dockerfile similarity index 100% rename from ruby/Dockerfile rename to impls/ruby/Dockerfile diff --git a/ruby/Makefile b/impls/ruby/Makefile similarity index 100% rename from ruby/Makefile rename to impls/ruby/Makefile diff --git a/ruby/core.rb b/impls/ruby/core.rb similarity index 100% rename from ruby/core.rb rename to impls/ruby/core.rb diff --git a/ruby/env.rb b/impls/ruby/env.rb similarity index 100% rename from ruby/env.rb rename to impls/ruby/env.rb diff --git a/ruby/mal_readline.rb b/impls/ruby/mal_readline.rb similarity index 100% rename from ruby/mal_readline.rb rename to impls/ruby/mal_readline.rb diff --git a/ruby/printer.rb b/impls/ruby/printer.rb similarity index 100% rename from ruby/printer.rb rename to impls/ruby/printer.rb diff --git a/ruby/reader.rb b/impls/ruby/reader.rb similarity index 100% rename from ruby/reader.rb rename to impls/ruby/reader.rb diff --git a/ruby/run b/impls/ruby/run similarity index 100% rename from ruby/run rename to impls/ruby/run diff --git a/ruby/step0_repl.rb b/impls/ruby/step0_repl.rb similarity index 100% rename from ruby/step0_repl.rb rename to impls/ruby/step0_repl.rb diff --git a/ruby/step1_read_print.rb b/impls/ruby/step1_read_print.rb similarity index 100% rename from ruby/step1_read_print.rb rename to impls/ruby/step1_read_print.rb diff --git a/ruby/step2_eval.rb b/impls/ruby/step2_eval.rb similarity index 100% rename from ruby/step2_eval.rb rename to impls/ruby/step2_eval.rb diff --git a/ruby/step3_env.rb b/impls/ruby/step3_env.rb similarity index 100% rename from ruby/step3_env.rb rename to impls/ruby/step3_env.rb diff --git a/ruby/step4_if_fn_do.rb b/impls/ruby/step4_if_fn_do.rb similarity index 100% rename from ruby/step4_if_fn_do.rb rename to impls/ruby/step4_if_fn_do.rb diff --git a/ruby/step5_tco.rb b/impls/ruby/step5_tco.rb similarity index 100% rename from ruby/step5_tco.rb rename to impls/ruby/step5_tco.rb diff --git a/ruby/step6_file.rb b/impls/ruby/step6_file.rb similarity index 100% rename from ruby/step6_file.rb rename to impls/ruby/step6_file.rb diff --git a/ruby/step7_quote.rb b/impls/ruby/step7_quote.rb similarity index 100% rename from ruby/step7_quote.rb rename to impls/ruby/step7_quote.rb diff --git a/ruby/step8_macros.rb b/impls/ruby/step8_macros.rb similarity index 100% rename from ruby/step8_macros.rb rename to impls/ruby/step8_macros.rb diff --git a/ruby/step9_try.rb b/impls/ruby/step9_try.rb similarity index 100% rename from ruby/step9_try.rb rename to impls/ruby/step9_try.rb diff --git a/ruby/stepA_mal.rb b/impls/ruby/stepA_mal.rb similarity index 100% rename from ruby/stepA_mal.rb rename to impls/ruby/stepA_mal.rb diff --git a/ruby/tests/step5_tco.mal b/impls/ruby/tests/step5_tco.mal similarity index 100% rename from ruby/tests/step5_tco.mal rename to impls/ruby/tests/step5_tco.mal diff --git a/ruby/tests/stepA_mal.mal b/impls/ruby/tests/stepA_mal.mal similarity index 100% rename from ruby/tests/stepA_mal.mal rename to impls/ruby/tests/stepA_mal.mal diff --git a/ruby/types.rb b/impls/ruby/types.rb similarity index 100% rename from ruby/types.rb rename to impls/ruby/types.rb diff --git a/rust/.gitignore b/impls/rust/.gitignore similarity index 100% rename from rust/.gitignore rename to impls/rust/.gitignore diff --git a/rust/Cargo.lock b/impls/rust/Cargo.lock similarity index 100% rename from rust/Cargo.lock rename to impls/rust/Cargo.lock diff --git a/rust/Cargo.toml b/impls/rust/Cargo.toml similarity index 100% rename from rust/Cargo.toml rename to impls/rust/Cargo.toml diff --git a/rust/Dockerfile b/impls/rust/Dockerfile similarity index 100% rename from rust/Dockerfile rename to impls/rust/Dockerfile diff --git a/rust/Makefile b/impls/rust/Makefile similarity index 100% rename from rust/Makefile rename to impls/rust/Makefile diff --git a/rust/core.rs b/impls/rust/core.rs similarity index 100% rename from rust/core.rs rename to impls/rust/core.rs diff --git a/rust/env.rs b/impls/rust/env.rs similarity index 100% rename from rust/env.rs rename to impls/rust/env.rs diff --git a/rust/printer.rs b/impls/rust/printer.rs similarity index 100% rename from rust/printer.rs rename to impls/rust/printer.rs diff --git a/rust/reader.rs b/impls/rust/reader.rs similarity index 100% rename from rust/reader.rs rename to impls/rust/reader.rs diff --git a/rust/run b/impls/rust/run similarity index 100% rename from rust/run rename to impls/rust/run diff --git a/rust/step0_repl.rs b/impls/rust/step0_repl.rs similarity index 100% rename from rust/step0_repl.rs rename to impls/rust/step0_repl.rs diff --git a/rust/step1_read_print.rs b/impls/rust/step1_read_print.rs similarity index 100% rename from rust/step1_read_print.rs rename to impls/rust/step1_read_print.rs diff --git a/rust/step2_eval.rs b/impls/rust/step2_eval.rs similarity index 100% rename from rust/step2_eval.rs rename to impls/rust/step2_eval.rs diff --git a/rust/step3_env.rs b/impls/rust/step3_env.rs similarity index 100% rename from rust/step3_env.rs rename to impls/rust/step3_env.rs diff --git a/rust/step4_if_fn_do.rs b/impls/rust/step4_if_fn_do.rs similarity index 100% rename from rust/step4_if_fn_do.rs rename to impls/rust/step4_if_fn_do.rs diff --git a/rust/step5_tco.rs b/impls/rust/step5_tco.rs similarity index 100% rename from rust/step5_tco.rs rename to impls/rust/step5_tco.rs diff --git a/rust/step6_file.rs b/impls/rust/step6_file.rs similarity index 100% rename from rust/step6_file.rs rename to impls/rust/step6_file.rs diff --git a/rust/step7_quote.rs b/impls/rust/step7_quote.rs similarity index 100% rename from rust/step7_quote.rs rename to impls/rust/step7_quote.rs diff --git a/rust/step8_macros.rs b/impls/rust/step8_macros.rs similarity index 100% rename from rust/step8_macros.rs rename to impls/rust/step8_macros.rs diff --git a/rust/step9_try.rs b/impls/rust/step9_try.rs similarity index 100% rename from rust/step9_try.rs rename to impls/rust/step9_try.rs diff --git a/rust/stepA_mal.rs b/impls/rust/stepA_mal.rs similarity index 100% rename from rust/stepA_mal.rs rename to impls/rust/stepA_mal.rs diff --git a/rust/types.rs b/impls/rust/types.rs similarity index 100% rename from rust/types.rs rename to impls/rust/types.rs diff --git a/scala/Dockerfile b/impls/scala/Dockerfile similarity index 100% rename from scala/Dockerfile rename to impls/scala/Dockerfile diff --git a/scala/Makefile b/impls/scala/Makefile similarity index 100% rename from scala/Makefile rename to impls/scala/Makefile diff --git a/scala/assembly.sbt b/impls/scala/assembly.sbt similarity index 100% rename from scala/assembly.sbt rename to impls/scala/assembly.sbt diff --git a/scala/build.sbt b/impls/scala/build.sbt similarity index 100% rename from scala/build.sbt rename to impls/scala/build.sbt diff --git a/scala/core.scala b/impls/scala/core.scala similarity index 100% rename from scala/core.scala rename to impls/scala/core.scala diff --git a/scala/env.scala b/impls/scala/env.scala similarity index 100% rename from scala/env.scala rename to impls/scala/env.scala diff --git a/scala/printer.scala b/impls/scala/printer.scala similarity index 100% rename from scala/printer.scala rename to impls/scala/printer.scala diff --git a/scala/project/assembly.sbt b/impls/scala/project/assembly.sbt similarity index 100% rename from scala/project/assembly.sbt rename to impls/scala/project/assembly.sbt diff --git a/scala/reader.scala b/impls/scala/reader.scala similarity index 100% rename from scala/reader.scala rename to impls/scala/reader.scala diff --git a/scala/run b/impls/scala/run similarity index 100% rename from scala/run rename to impls/scala/run diff --git a/scala/step0_repl.scala b/impls/scala/step0_repl.scala similarity index 100% rename from scala/step0_repl.scala rename to impls/scala/step0_repl.scala diff --git a/scala/step1_read_print.scala b/impls/scala/step1_read_print.scala similarity index 100% rename from scala/step1_read_print.scala rename to impls/scala/step1_read_print.scala diff --git a/scala/step2_eval.scala b/impls/scala/step2_eval.scala similarity index 100% rename from scala/step2_eval.scala rename to impls/scala/step2_eval.scala diff --git a/scala/step3_env.scala b/impls/scala/step3_env.scala similarity index 100% rename from scala/step3_env.scala rename to impls/scala/step3_env.scala diff --git a/scala/step4_if_fn_do.scala b/impls/scala/step4_if_fn_do.scala similarity index 100% rename from scala/step4_if_fn_do.scala rename to impls/scala/step4_if_fn_do.scala diff --git a/scala/step5_tco.scala b/impls/scala/step5_tco.scala similarity index 100% rename from scala/step5_tco.scala rename to impls/scala/step5_tco.scala diff --git a/scala/step6_file.scala b/impls/scala/step6_file.scala similarity index 100% rename from scala/step6_file.scala rename to impls/scala/step6_file.scala diff --git a/scala/step7_quote.scala b/impls/scala/step7_quote.scala similarity index 100% rename from scala/step7_quote.scala rename to impls/scala/step7_quote.scala diff --git a/scala/step8_macros.scala b/impls/scala/step8_macros.scala similarity index 100% rename from scala/step8_macros.scala rename to impls/scala/step8_macros.scala diff --git a/scala/step9_try.scala b/impls/scala/step9_try.scala similarity index 100% rename from scala/step9_try.scala rename to impls/scala/step9_try.scala diff --git a/scala/stepA_mal.scala b/impls/scala/stepA_mal.scala similarity index 100% rename from scala/stepA_mal.scala rename to impls/scala/stepA_mal.scala diff --git a/scala/tests/step5_tco.mal b/impls/scala/tests/step5_tco.mal similarity index 100% rename from scala/tests/step5_tco.mal rename to impls/scala/tests/step5_tco.mal diff --git a/scala/types.scala b/impls/scala/types.scala similarity index 100% rename from scala/types.scala rename to impls/scala/types.scala diff --git a/scheme/.gitignore b/impls/scheme/.gitignore similarity index 100% rename from scheme/.gitignore rename to impls/scheme/.gitignore diff --git a/scheme/Dockerfile b/impls/scheme/Dockerfile similarity index 100% rename from scheme/Dockerfile rename to impls/scheme/Dockerfile diff --git a/scheme/Makefile b/impls/scheme/Makefile similarity index 100% rename from scheme/Makefile rename to impls/scheme/Makefile diff --git a/scheme/eggs/.keep b/impls/scheme/eggs/.keep similarity index 100% rename from scheme/eggs/.keep rename to impls/scheme/eggs/.keep diff --git a/scheme/lib/core.sld b/impls/scheme/lib/core.sld similarity index 100% rename from scheme/lib/core.sld rename to impls/scheme/lib/core.sld diff --git a/scheme/lib/env.sld b/impls/scheme/lib/env.sld similarity index 100% rename from scheme/lib/env.sld rename to impls/scheme/lib/env.sld diff --git a/scheme/lib/printer.sld b/impls/scheme/lib/printer.sld similarity index 100% rename from scheme/lib/printer.sld rename to impls/scheme/lib/printer.sld diff --git a/scheme/lib/reader.sld b/impls/scheme/lib/reader.sld similarity index 100% rename from scheme/lib/reader.sld rename to impls/scheme/lib/reader.sld diff --git a/scheme/lib/types.sld b/impls/scheme/lib/types.sld similarity index 100% rename from scheme/lib/types.sld rename to impls/scheme/lib/types.sld diff --git a/scheme/lib/util.sld b/impls/scheme/lib/util.sld similarity index 100% rename from scheme/lib/util.sld rename to impls/scheme/lib/util.sld diff --git a/scheme/run b/impls/scheme/run similarity index 100% rename from scheme/run rename to impls/scheme/run diff --git a/scheme/step0_repl.scm b/impls/scheme/step0_repl.scm similarity index 100% rename from scheme/step0_repl.scm rename to impls/scheme/step0_repl.scm diff --git a/scheme/step1_read_print.scm b/impls/scheme/step1_read_print.scm similarity index 100% rename from scheme/step1_read_print.scm rename to impls/scheme/step1_read_print.scm diff --git a/scheme/step2_eval.scm b/impls/scheme/step2_eval.scm similarity index 100% rename from scheme/step2_eval.scm rename to impls/scheme/step2_eval.scm diff --git a/scheme/step3_env.scm b/impls/scheme/step3_env.scm similarity index 100% rename from scheme/step3_env.scm rename to impls/scheme/step3_env.scm diff --git a/scheme/step4_if_fn_do.scm b/impls/scheme/step4_if_fn_do.scm similarity index 100% rename from scheme/step4_if_fn_do.scm rename to impls/scheme/step4_if_fn_do.scm diff --git a/scheme/step5_tco.scm b/impls/scheme/step5_tco.scm similarity index 100% rename from scheme/step5_tco.scm rename to impls/scheme/step5_tco.scm diff --git a/scheme/step6_file.scm b/impls/scheme/step6_file.scm similarity index 100% rename from scheme/step6_file.scm rename to impls/scheme/step6_file.scm diff --git a/scheme/step7_quote.scm b/impls/scheme/step7_quote.scm similarity index 100% rename from scheme/step7_quote.scm rename to impls/scheme/step7_quote.scm diff --git a/scheme/step8_macros.scm b/impls/scheme/step8_macros.scm similarity index 100% rename from scheme/step8_macros.scm rename to impls/scheme/step8_macros.scm diff --git a/scheme/step9_try.scm b/impls/scheme/step9_try.scm similarity index 100% rename from scheme/step9_try.scm rename to impls/scheme/step9_try.scm diff --git a/scheme/stepA_mal.scm b/impls/scheme/stepA_mal.scm similarity index 100% rename from scheme/stepA_mal.scm rename to impls/scheme/stepA_mal.scm diff --git a/scheme/tests/stepA_mal.mal b/impls/scheme/tests/stepA_mal.mal similarity index 100% rename from scheme/tests/stepA_mal.mal rename to impls/scheme/tests/stepA_mal.mal diff --git a/skew/Dockerfile b/impls/skew/Dockerfile similarity index 100% rename from skew/Dockerfile rename to impls/skew/Dockerfile diff --git a/skew/Makefile b/impls/skew/Makefile similarity index 100% rename from skew/Makefile rename to impls/skew/Makefile diff --git a/skew/core.sk b/impls/skew/core.sk similarity index 100% rename from skew/core.sk rename to impls/skew/core.sk diff --git a/skew/env.sk b/impls/skew/env.sk similarity index 100% rename from skew/env.sk rename to impls/skew/env.sk diff --git a/skew/printer.sk b/impls/skew/printer.sk similarity index 100% rename from skew/printer.sk rename to impls/skew/printer.sk diff --git a/skew/reader.sk b/impls/skew/reader.sk similarity index 100% rename from skew/reader.sk rename to impls/skew/reader.sk diff --git a/skew/run b/impls/skew/run similarity index 100% rename from skew/run rename to impls/skew/run diff --git a/skew/step0_repl.sk b/impls/skew/step0_repl.sk similarity index 100% rename from skew/step0_repl.sk rename to impls/skew/step0_repl.sk diff --git a/skew/step1_read_print.sk b/impls/skew/step1_read_print.sk similarity index 100% rename from skew/step1_read_print.sk rename to impls/skew/step1_read_print.sk diff --git a/skew/step2_eval.sk b/impls/skew/step2_eval.sk similarity index 100% rename from skew/step2_eval.sk rename to impls/skew/step2_eval.sk diff --git a/skew/step3_env.sk b/impls/skew/step3_env.sk similarity index 100% rename from skew/step3_env.sk rename to impls/skew/step3_env.sk diff --git a/skew/step4_if_fn_do.sk b/impls/skew/step4_if_fn_do.sk similarity index 100% rename from skew/step4_if_fn_do.sk rename to impls/skew/step4_if_fn_do.sk diff --git a/skew/step5_tco.sk b/impls/skew/step5_tco.sk similarity index 100% rename from skew/step5_tco.sk rename to impls/skew/step5_tco.sk diff --git a/skew/step6_file.sk b/impls/skew/step6_file.sk similarity index 100% rename from skew/step6_file.sk rename to impls/skew/step6_file.sk diff --git a/skew/step7_quote.sk b/impls/skew/step7_quote.sk similarity index 100% rename from skew/step7_quote.sk rename to impls/skew/step7_quote.sk diff --git a/skew/step8_macros.sk b/impls/skew/step8_macros.sk similarity index 100% rename from skew/step8_macros.sk rename to impls/skew/step8_macros.sk diff --git a/skew/step9_try.sk b/impls/skew/step9_try.sk similarity index 100% rename from skew/step9_try.sk rename to impls/skew/step9_try.sk diff --git a/skew/stepA_mal.sk b/impls/skew/stepA_mal.sk similarity index 100% rename from skew/stepA_mal.sk rename to impls/skew/stepA_mal.sk diff --git a/skew/tests/step5_tco.mal b/impls/skew/tests/step5_tco.mal similarity index 100% rename from skew/tests/step5_tco.mal rename to impls/skew/tests/step5_tco.mal diff --git a/skew/types.sk b/impls/skew/types.sk similarity index 100% rename from skew/types.sk rename to impls/skew/types.sk diff --git a/skew/util.sk b/impls/skew/util.sk similarity index 100% rename from skew/util.sk rename to impls/skew/util.sk diff --git a/swift/Makefile b/impls/swift/Makefile similarity index 100% rename from swift/Makefile rename to impls/swift/Makefile diff --git a/swift/bridging-header.h b/impls/swift/bridging-header.h similarity index 100% rename from swift/bridging-header.h rename to impls/swift/bridging-header.h diff --git a/swift/core.swift b/impls/swift/core.swift similarity index 100% rename from swift/core.swift rename to impls/swift/core.swift diff --git a/swift/env.swift b/impls/swift/env.swift similarity index 100% rename from swift/env.swift rename to impls/swift/env.swift diff --git a/swift/main.swift b/impls/swift/main.swift similarity index 100% rename from swift/main.swift rename to impls/swift/main.swift diff --git a/swift/printer.swift b/impls/swift/printer.swift similarity index 100% rename from swift/printer.swift rename to impls/swift/printer.swift diff --git a/swift/reader.swift b/impls/swift/reader.swift similarity index 100% rename from swift/reader.swift rename to impls/swift/reader.swift diff --git a/swift/readline.swift b/impls/swift/readline.swift similarity index 100% rename from swift/readline.swift rename to impls/swift/readline.swift diff --git a/swift/run b/impls/swift/run similarity index 100% rename from swift/run rename to impls/swift/run diff --git a/swift/step0_repl.swift b/impls/swift/step0_repl.swift similarity index 100% rename from swift/step0_repl.swift rename to impls/swift/step0_repl.swift diff --git a/swift/step1_read_print.swift b/impls/swift/step1_read_print.swift similarity index 100% rename from swift/step1_read_print.swift rename to impls/swift/step1_read_print.swift diff --git a/swift/step2_eval.swift b/impls/swift/step2_eval.swift similarity index 100% rename from swift/step2_eval.swift rename to impls/swift/step2_eval.swift diff --git a/swift/step3_env.swift b/impls/swift/step3_env.swift similarity index 100% rename from swift/step3_env.swift rename to impls/swift/step3_env.swift diff --git a/swift/step4_if_fn_do.swift b/impls/swift/step4_if_fn_do.swift similarity index 100% rename from swift/step4_if_fn_do.swift rename to impls/swift/step4_if_fn_do.swift diff --git a/swift/step5_tco.swift b/impls/swift/step5_tco.swift similarity index 100% rename from swift/step5_tco.swift rename to impls/swift/step5_tco.swift diff --git a/swift/step6_file.swift b/impls/swift/step6_file.swift similarity index 100% rename from swift/step6_file.swift rename to impls/swift/step6_file.swift diff --git a/swift/step7_quote.swift b/impls/swift/step7_quote.swift similarity index 100% rename from swift/step7_quote.swift rename to impls/swift/step7_quote.swift diff --git a/swift/step8_macros.swift b/impls/swift/step8_macros.swift similarity index 100% rename from swift/step8_macros.swift rename to impls/swift/step8_macros.swift diff --git a/swift/step9_try.swift b/impls/swift/step9_try.swift similarity index 100% rename from swift/step9_try.swift rename to impls/swift/step9_try.swift diff --git a/swift/stepA_mal.swift b/impls/swift/stepA_mal.swift similarity index 100% rename from swift/stepA_mal.swift rename to impls/swift/stepA_mal.swift diff --git a/swift/templates/add_steps.sh b/impls/swift/templates/add_steps.sh similarity index 100% rename from swift/templates/add_steps.sh rename to impls/swift/templates/add_steps.sh diff --git a/swift/templates/filter_steps.sh b/impls/swift/templates/filter_steps.sh similarity index 100% rename from swift/templates/filter_steps.sh rename to impls/swift/templates/filter_steps.sh diff --git a/swift/templates/step.swift b/impls/swift/templates/step.swift similarity index 100% rename from swift/templates/step.swift rename to impls/swift/templates/step.swift diff --git a/swift/tests/step5_tco.mal b/impls/swift/tests/step5_tco.mal similarity index 100% rename from swift/tests/step5_tco.mal rename to impls/swift/tests/step5_tco.mal diff --git a/swift/types_class.swift b/impls/swift/types_class.swift similarity index 100% rename from swift/types_class.swift rename to impls/swift/types_class.swift diff --git a/swift/types_enum.swift b/impls/swift/types_enum.swift similarity index 100% rename from swift/types_enum.swift rename to impls/swift/types_enum.swift diff --git a/swift3/Dockerfile b/impls/swift3/Dockerfile similarity index 100% rename from swift3/Dockerfile rename to impls/swift3/Dockerfile diff --git a/swift3/Makefile b/impls/swift3/Makefile similarity index 100% rename from swift3/Makefile rename to impls/swift3/Makefile diff --git a/swift3/Sources/core.swift b/impls/swift3/Sources/core.swift similarity index 100% rename from swift3/Sources/core.swift rename to impls/swift3/Sources/core.swift diff --git a/swift3/Sources/env.swift b/impls/swift3/Sources/env.swift similarity index 100% rename from swift3/Sources/env.swift rename to impls/swift3/Sources/env.swift diff --git a/swift3/Sources/printer.swift b/impls/swift3/Sources/printer.swift similarity index 100% rename from swift3/Sources/printer.swift rename to impls/swift3/Sources/printer.swift diff --git a/swift3/Sources/reader.swift b/impls/swift3/Sources/reader.swift similarity index 100% rename from swift3/Sources/reader.swift rename to impls/swift3/Sources/reader.swift diff --git a/swift3/Sources/step0_repl/main.swift b/impls/swift3/Sources/step0_repl/main.swift similarity index 100% rename from swift3/Sources/step0_repl/main.swift rename to impls/swift3/Sources/step0_repl/main.swift diff --git a/swift3/Sources/step1_read_print/main.swift b/impls/swift3/Sources/step1_read_print/main.swift similarity index 100% rename from swift3/Sources/step1_read_print/main.swift rename to impls/swift3/Sources/step1_read_print/main.swift diff --git a/swift3/Sources/step2_eval/main.swift b/impls/swift3/Sources/step2_eval/main.swift similarity index 100% rename from swift3/Sources/step2_eval/main.swift rename to impls/swift3/Sources/step2_eval/main.swift diff --git a/swift3/Sources/step3_env/main.swift b/impls/swift3/Sources/step3_env/main.swift similarity index 100% rename from swift3/Sources/step3_env/main.swift rename to impls/swift3/Sources/step3_env/main.swift diff --git a/swift3/Sources/step4_if_fn_do/main.swift b/impls/swift3/Sources/step4_if_fn_do/main.swift similarity index 100% rename from swift3/Sources/step4_if_fn_do/main.swift rename to impls/swift3/Sources/step4_if_fn_do/main.swift diff --git a/swift3/Sources/step5_tco/main.swift b/impls/swift3/Sources/step5_tco/main.swift similarity index 100% rename from swift3/Sources/step5_tco/main.swift rename to impls/swift3/Sources/step5_tco/main.swift diff --git a/swift3/Sources/step6_file/main.swift b/impls/swift3/Sources/step6_file/main.swift similarity index 100% rename from swift3/Sources/step6_file/main.swift rename to impls/swift3/Sources/step6_file/main.swift diff --git a/swift3/Sources/step7_quote/main.swift b/impls/swift3/Sources/step7_quote/main.swift similarity index 100% rename from swift3/Sources/step7_quote/main.swift rename to impls/swift3/Sources/step7_quote/main.swift diff --git a/swift3/Sources/step8_macros/main.swift b/impls/swift3/Sources/step8_macros/main.swift similarity index 100% rename from swift3/Sources/step8_macros/main.swift rename to impls/swift3/Sources/step8_macros/main.swift diff --git a/swift3/Sources/step9_try/main.swift b/impls/swift3/Sources/step9_try/main.swift similarity index 100% rename from swift3/Sources/step9_try/main.swift rename to impls/swift3/Sources/step9_try/main.swift diff --git a/swift3/Sources/stepA_mal/main.swift b/impls/swift3/Sources/stepA_mal/main.swift similarity index 100% rename from swift3/Sources/stepA_mal/main.swift rename to impls/swift3/Sources/stepA_mal/main.swift diff --git a/swift3/Sources/types.swift b/impls/swift3/Sources/types.swift similarity index 100% rename from swift3/Sources/types.swift rename to impls/swift3/Sources/types.swift diff --git a/swift3/run b/impls/swift3/run similarity index 100% rename from swift3/run rename to impls/swift3/run diff --git a/swift3/tests/step5_tco.mal b/impls/swift3/tests/step5_tco.mal similarity index 100% rename from swift3/tests/step5_tco.mal rename to impls/swift3/tests/step5_tco.mal diff --git a/swift4/Dockerfile b/impls/swift4/Dockerfile similarity index 100% rename from swift4/Dockerfile rename to impls/swift4/Dockerfile diff --git a/swift4/Makefile b/impls/swift4/Makefile similarity index 100% rename from swift4/Makefile rename to impls/swift4/Makefile diff --git a/swift4/Sources/core.swift b/impls/swift4/Sources/core.swift similarity index 100% rename from swift4/Sources/core.swift rename to impls/swift4/Sources/core.swift diff --git a/swift4/Sources/env.swift b/impls/swift4/Sources/env.swift similarity index 100% rename from swift4/Sources/env.swift rename to impls/swift4/Sources/env.swift diff --git a/swift4/Sources/printer.swift b/impls/swift4/Sources/printer.swift similarity index 100% rename from swift4/Sources/printer.swift rename to impls/swift4/Sources/printer.swift diff --git a/swift4/Sources/reader.swift b/impls/swift4/Sources/reader.swift similarity index 100% rename from swift4/Sources/reader.swift rename to impls/swift4/Sources/reader.swift diff --git a/swift4/Sources/step0_repl/main.swift b/impls/swift4/Sources/step0_repl/main.swift similarity index 100% rename from swift4/Sources/step0_repl/main.swift rename to impls/swift4/Sources/step0_repl/main.swift diff --git a/swift4/Sources/step1_read_print/main.swift b/impls/swift4/Sources/step1_read_print/main.swift similarity index 100% rename from swift4/Sources/step1_read_print/main.swift rename to impls/swift4/Sources/step1_read_print/main.swift diff --git a/swift4/Sources/step2_eval/main.swift b/impls/swift4/Sources/step2_eval/main.swift similarity index 100% rename from swift4/Sources/step2_eval/main.swift rename to impls/swift4/Sources/step2_eval/main.swift diff --git a/swift4/Sources/step3_env/main.swift b/impls/swift4/Sources/step3_env/main.swift similarity index 100% rename from swift4/Sources/step3_env/main.swift rename to impls/swift4/Sources/step3_env/main.swift diff --git a/swift4/Sources/step4_if_fn_do/main.swift b/impls/swift4/Sources/step4_if_fn_do/main.swift similarity index 100% rename from swift4/Sources/step4_if_fn_do/main.swift rename to impls/swift4/Sources/step4_if_fn_do/main.swift diff --git a/swift4/Sources/step5_tco/main.swift b/impls/swift4/Sources/step5_tco/main.swift similarity index 100% rename from swift4/Sources/step5_tco/main.swift rename to impls/swift4/Sources/step5_tco/main.swift diff --git a/swift4/Sources/step6_file/main.swift b/impls/swift4/Sources/step6_file/main.swift similarity index 100% rename from swift4/Sources/step6_file/main.swift rename to impls/swift4/Sources/step6_file/main.swift diff --git a/swift4/Sources/step7_quote/main.swift b/impls/swift4/Sources/step7_quote/main.swift similarity index 100% rename from swift4/Sources/step7_quote/main.swift rename to impls/swift4/Sources/step7_quote/main.swift diff --git a/swift4/Sources/step8_macros/main.swift b/impls/swift4/Sources/step8_macros/main.swift similarity index 100% rename from swift4/Sources/step8_macros/main.swift rename to impls/swift4/Sources/step8_macros/main.swift diff --git a/swift4/Sources/step9_try/main.swift b/impls/swift4/Sources/step9_try/main.swift similarity index 100% rename from swift4/Sources/step9_try/main.swift rename to impls/swift4/Sources/step9_try/main.swift diff --git a/swift4/Sources/stepA_mal/main.swift b/impls/swift4/Sources/stepA_mal/main.swift similarity index 100% rename from swift4/Sources/stepA_mal/main.swift rename to impls/swift4/Sources/stepA_mal/main.swift diff --git a/swift4/Sources/types.swift b/impls/swift4/Sources/types.swift similarity index 100% rename from swift4/Sources/types.swift rename to impls/swift4/Sources/types.swift diff --git a/swift4/run b/impls/swift4/run similarity index 100% rename from swift4/run rename to impls/swift4/run diff --git a/swift5/.gitignore b/impls/swift5/.gitignore similarity index 100% rename from swift5/.gitignore rename to impls/swift5/.gitignore diff --git a/swift5/Dockerfile b/impls/swift5/Dockerfile similarity index 100% rename from swift5/Dockerfile rename to impls/swift5/Dockerfile diff --git a/swift5/Makefile b/impls/swift5/Makefile similarity index 100% rename from swift5/Makefile rename to impls/swift5/Makefile diff --git a/swift5/Package.swift b/impls/swift5/Package.swift similarity index 100% rename from swift5/Package.swift rename to impls/swift5/Package.swift diff --git a/swift5/Sources/core/Core.swift b/impls/swift5/Sources/core/Core.swift similarity index 100% rename from swift5/Sources/core/Core.swift rename to impls/swift5/Sources/core/Core.swift diff --git a/swift5/Sources/core/Env.swift b/impls/swift5/Sources/core/Env.swift similarity index 100% rename from swift5/Sources/core/Env.swift rename to impls/swift5/Sources/core/Env.swift diff --git a/swift5/Sources/core/Errors.swift b/impls/swift5/Sources/core/Errors.swift similarity index 100% rename from swift5/Sources/core/Errors.swift rename to impls/swift5/Sources/core/Errors.swift diff --git a/swift5/Sources/core/Parser.swift b/impls/swift5/Sources/core/Parser.swift similarity index 100% rename from swift5/Sources/core/Parser.swift rename to impls/swift5/Sources/core/Parser.swift diff --git a/swift5/Sources/core/Printer.swift b/impls/swift5/Sources/core/Printer.swift similarity index 100% rename from swift5/Sources/core/Printer.swift rename to impls/swift5/Sources/core/Printer.swift diff --git a/swift5/Sources/core/Reader.swift b/impls/swift5/Sources/core/Reader.swift similarity index 100% rename from swift5/Sources/core/Reader.swift rename to impls/swift5/Sources/core/Reader.swift diff --git a/swift5/Sources/core/Types.swift b/impls/swift5/Sources/core/Types.swift similarity index 100% rename from swift5/Sources/core/Types.swift rename to impls/swift5/Sources/core/Types.swift diff --git a/swift5/Sources/core/Utils.swift b/impls/swift5/Sources/core/Utils.swift similarity index 100% rename from swift5/Sources/core/Utils.swift rename to impls/swift5/Sources/core/Utils.swift diff --git a/swift5/Sources/step0_repl/main.swift b/impls/swift5/Sources/step0_repl/main.swift similarity index 100% rename from swift5/Sources/step0_repl/main.swift rename to impls/swift5/Sources/step0_repl/main.swift diff --git a/swift5/Sources/step1_read_print/main.swift b/impls/swift5/Sources/step1_read_print/main.swift similarity index 100% rename from swift5/Sources/step1_read_print/main.swift rename to impls/swift5/Sources/step1_read_print/main.swift diff --git a/swift5/Sources/step2_eval/main.swift b/impls/swift5/Sources/step2_eval/main.swift similarity index 100% rename from swift5/Sources/step2_eval/main.swift rename to impls/swift5/Sources/step2_eval/main.swift diff --git a/swift5/Sources/step3_env/main.swift b/impls/swift5/Sources/step3_env/main.swift similarity index 100% rename from swift5/Sources/step3_env/main.swift rename to impls/swift5/Sources/step3_env/main.swift diff --git a/swift5/Sources/step4_if_fn_do/main.swift b/impls/swift5/Sources/step4_if_fn_do/main.swift similarity index 100% rename from swift5/Sources/step4_if_fn_do/main.swift rename to impls/swift5/Sources/step4_if_fn_do/main.swift diff --git a/swift5/Sources/step5_tco/main.swift b/impls/swift5/Sources/step5_tco/main.swift similarity index 100% rename from swift5/Sources/step5_tco/main.swift rename to impls/swift5/Sources/step5_tco/main.swift diff --git a/swift5/Sources/step6_file/main.swift b/impls/swift5/Sources/step6_file/main.swift similarity index 100% rename from swift5/Sources/step6_file/main.swift rename to impls/swift5/Sources/step6_file/main.swift diff --git a/swift5/Sources/step7_quote/main.swift b/impls/swift5/Sources/step7_quote/main.swift similarity index 100% rename from swift5/Sources/step7_quote/main.swift rename to impls/swift5/Sources/step7_quote/main.swift diff --git a/swift5/Sources/step8_macros/main.swift b/impls/swift5/Sources/step8_macros/main.swift similarity index 100% rename from swift5/Sources/step8_macros/main.swift rename to impls/swift5/Sources/step8_macros/main.swift diff --git a/swift5/Sources/step9_try/main.swift b/impls/swift5/Sources/step9_try/main.swift similarity index 100% rename from swift5/Sources/step9_try/main.swift rename to impls/swift5/Sources/step9_try/main.swift diff --git a/swift5/Sources/stepA_mal/main.swift b/impls/swift5/Sources/stepA_mal/main.swift similarity index 100% rename from swift5/Sources/stepA_mal/main.swift rename to impls/swift5/Sources/stepA_mal/main.swift diff --git a/swift5/run b/impls/swift5/run similarity index 100% rename from swift5/run rename to impls/swift5/run diff --git a/tcl/Dockerfile b/impls/tcl/Dockerfile similarity index 100% rename from tcl/Dockerfile rename to impls/tcl/Dockerfile diff --git a/tcl/Makefile b/impls/tcl/Makefile similarity index 100% rename from tcl/Makefile rename to impls/tcl/Makefile diff --git a/tcl/core.tcl b/impls/tcl/core.tcl similarity index 100% rename from tcl/core.tcl rename to impls/tcl/core.tcl diff --git a/tcl/env.tcl b/impls/tcl/env.tcl similarity index 100% rename from tcl/env.tcl rename to impls/tcl/env.tcl diff --git a/tcl/mal_readline.tcl b/impls/tcl/mal_readline.tcl similarity index 100% rename from tcl/mal_readline.tcl rename to impls/tcl/mal_readline.tcl diff --git a/tcl/printer.tcl b/impls/tcl/printer.tcl similarity index 100% rename from tcl/printer.tcl rename to impls/tcl/printer.tcl diff --git a/tcl/reader.tcl b/impls/tcl/reader.tcl similarity index 100% rename from tcl/reader.tcl rename to impls/tcl/reader.tcl diff --git a/tcl/run b/impls/tcl/run similarity index 100% rename from tcl/run rename to impls/tcl/run diff --git a/tcl/step0_repl.tcl b/impls/tcl/step0_repl.tcl similarity index 100% rename from tcl/step0_repl.tcl rename to impls/tcl/step0_repl.tcl diff --git a/tcl/step1_read_print.tcl b/impls/tcl/step1_read_print.tcl similarity index 100% rename from tcl/step1_read_print.tcl rename to impls/tcl/step1_read_print.tcl diff --git a/tcl/step2_eval.tcl b/impls/tcl/step2_eval.tcl similarity index 100% rename from tcl/step2_eval.tcl rename to impls/tcl/step2_eval.tcl diff --git a/tcl/step3_env.tcl b/impls/tcl/step3_env.tcl similarity index 100% rename from tcl/step3_env.tcl rename to impls/tcl/step3_env.tcl diff --git a/tcl/step4_if_fn_do.tcl b/impls/tcl/step4_if_fn_do.tcl similarity index 100% rename from tcl/step4_if_fn_do.tcl rename to impls/tcl/step4_if_fn_do.tcl diff --git a/tcl/step5_tco.tcl b/impls/tcl/step5_tco.tcl similarity index 100% rename from tcl/step5_tco.tcl rename to impls/tcl/step5_tco.tcl diff --git a/tcl/step6_file.tcl b/impls/tcl/step6_file.tcl similarity index 100% rename from tcl/step6_file.tcl rename to impls/tcl/step6_file.tcl diff --git a/tcl/step7_quote.tcl b/impls/tcl/step7_quote.tcl similarity index 100% rename from tcl/step7_quote.tcl rename to impls/tcl/step7_quote.tcl diff --git a/tcl/step8_macros.tcl b/impls/tcl/step8_macros.tcl similarity index 100% rename from tcl/step8_macros.tcl rename to impls/tcl/step8_macros.tcl diff --git a/tcl/step9_try.tcl b/impls/tcl/step9_try.tcl similarity index 100% rename from tcl/step9_try.tcl rename to impls/tcl/step9_try.tcl diff --git a/tcl/stepA_mal.tcl b/impls/tcl/stepA_mal.tcl similarity index 100% rename from tcl/stepA_mal.tcl rename to impls/tcl/stepA_mal.tcl diff --git a/tcl/tests/step5_tco.mal b/impls/tcl/tests/step5_tco.mal similarity index 100% rename from tcl/tests/step5_tco.mal rename to impls/tcl/tests/step5_tco.mal diff --git a/tcl/tests/stepA_mal.mal b/impls/tcl/tests/stepA_mal.mal similarity index 100% rename from tcl/tests/stepA_mal.mal rename to impls/tcl/tests/stepA_mal.mal diff --git a/tcl/types.tcl b/impls/tcl/types.tcl similarity index 100% rename from tcl/types.tcl rename to impls/tcl/types.tcl diff --git a/tests/computations.mal b/impls/tests/computations.mal similarity index 100% rename from tests/computations.mal rename to impls/tests/computations.mal diff --git a/tests/docker-build.sh b/impls/tests/docker-build.sh similarity index 100% rename from tests/docker-build.sh rename to impls/tests/docker-build.sh diff --git a/tests/docker-run.sh b/impls/tests/docker-run.sh similarity index 100% rename from tests/docker-run.sh rename to impls/tests/docker-run.sh diff --git a/tests/docker/Dockerfile b/impls/tests/docker/Dockerfile similarity index 100% rename from tests/docker/Dockerfile rename to impls/tests/docker/Dockerfile diff --git a/tests/inc.mal b/impls/tests/inc.mal similarity index 100% rename from tests/inc.mal rename to impls/tests/inc.mal diff --git a/tests/incA.mal b/impls/tests/incA.mal similarity index 100% rename from tests/incA.mal rename to impls/tests/incA.mal diff --git a/tests/incB.mal b/impls/tests/incB.mal similarity index 100% rename from tests/incB.mal rename to impls/tests/incB.mal diff --git a/tests/incC.mal b/impls/tests/incC.mal similarity index 100% rename from tests/incC.mal rename to impls/tests/incC.mal diff --git a/tests/lib/alias-hacks.mal b/impls/tests/lib/alias-hacks.mal similarity index 100% rename from tests/lib/alias-hacks.mal rename to impls/tests/lib/alias-hacks.mal diff --git a/tests/lib/equality.mal b/impls/tests/lib/equality.mal similarity index 100% rename from tests/lib/equality.mal rename to impls/tests/lib/equality.mal diff --git a/tests/lib/load-file-once-inc.mal b/impls/tests/lib/load-file-once-inc.mal similarity index 100% rename from tests/lib/load-file-once-inc.mal rename to impls/tests/lib/load-file-once-inc.mal diff --git a/tests/lib/load-file-once.mal b/impls/tests/lib/load-file-once.mal similarity index 100% rename from tests/lib/load-file-once.mal rename to impls/tests/lib/load-file-once.mal diff --git a/tests/lib/memoize.mal b/impls/tests/lib/memoize.mal similarity index 100% rename from tests/lib/memoize.mal rename to impls/tests/lib/memoize.mal diff --git a/tests/lib/pprint.mal b/impls/tests/lib/pprint.mal similarity index 100% rename from tests/lib/pprint.mal rename to impls/tests/lib/pprint.mal diff --git a/tests/lib/protocols.mal b/impls/tests/lib/protocols.mal similarity index 100% rename from tests/lib/protocols.mal rename to impls/tests/lib/protocols.mal diff --git a/tests/lib/reducers.mal b/impls/tests/lib/reducers.mal similarity index 100% rename from tests/lib/reducers.mal rename to impls/tests/lib/reducers.mal diff --git a/tests/lib/test_cascade.mal b/impls/tests/lib/test_cascade.mal similarity index 100% rename from tests/lib/test_cascade.mal rename to impls/tests/lib/test_cascade.mal diff --git a/tests/lib/threading.mal b/impls/tests/lib/threading.mal similarity index 100% rename from tests/lib/threading.mal rename to impls/tests/lib/threading.mal diff --git a/tests/lib/trivial.mal b/impls/tests/lib/trivial.mal similarity index 100% rename from tests/lib/trivial.mal rename to impls/tests/lib/trivial.mal diff --git a/tests/perf1.mal b/impls/tests/perf1.mal similarity index 100% rename from tests/perf1.mal rename to impls/tests/perf1.mal diff --git a/tests/perf2.mal b/impls/tests/perf2.mal similarity index 100% rename from tests/perf2.mal rename to impls/tests/perf2.mal diff --git a/tests/perf3.mal b/impls/tests/perf3.mal similarity index 100% rename from tests/perf3.mal rename to impls/tests/perf3.mal diff --git a/tests/print_argv.mal b/impls/tests/print_argv.mal similarity index 100% rename from tests/print_argv.mal rename to impls/tests/print_argv.mal diff --git a/run_argv_test.sh b/impls/tests/run_argv_test.sh similarity index 78% rename from run_argv_test.sh rename to impls/tests/run_argv_test.sh index 0e5db2ad..bb29598f 100755 --- a/run_argv_test.sh +++ b/impls/tests/run_argv_test.sh @@ -23,16 +23,16 @@ fi root="$(dirname $0)" -out="$( $@ $root/tests/print_argv.mal aaa bbb ccc | tr -d '\r' )" +out="$( $@ $root/print_argv.mal aaa bbb ccc | tr -d '\r' )" assert_equal '("aaa" "bbb" "ccc")' "$out" # Note: The 'make' implementation cannot handle arguments with spaces in them, # so for now we skip this test. # -# out="$( $@ $root/tests/print_argv.mal aaa 'bbb ccc' ddd )" +# out="$( $@ $root/print_argv.mal aaa 'bbb ccc' ddd )" # assert_equal '("aaa" "bbb ccc" "ddd")' "$out" -out="$( $@ $root/tests/print_argv.mal | tr -d '\r' )" +out="$( $@ $root/print_argv.mal | tr -d '\r' )" assert_equal '()' "$out" echo 'Passed all *ARGV* tests' diff --git a/tests/step0_repl.mal b/impls/tests/step0_repl.mal similarity index 100% rename from tests/step0_repl.mal rename to impls/tests/step0_repl.mal diff --git a/tests/step1_read_print.mal b/impls/tests/step1_read_print.mal similarity index 100% rename from tests/step1_read_print.mal rename to impls/tests/step1_read_print.mal diff --git a/tests/step2_eval.mal b/impls/tests/step2_eval.mal similarity index 100% rename from tests/step2_eval.mal rename to impls/tests/step2_eval.mal diff --git a/tests/step3_env.mal b/impls/tests/step3_env.mal similarity index 100% rename from tests/step3_env.mal rename to impls/tests/step3_env.mal diff --git a/tests/step4_if_fn_do.mal b/impls/tests/step4_if_fn_do.mal similarity index 100% rename from tests/step4_if_fn_do.mal rename to impls/tests/step4_if_fn_do.mal diff --git a/tests/step5_tco.mal b/impls/tests/step5_tco.mal similarity index 100% rename from tests/step5_tco.mal rename to impls/tests/step5_tco.mal diff --git a/tests/step6_file.mal b/impls/tests/step6_file.mal similarity index 100% rename from tests/step6_file.mal rename to impls/tests/step6_file.mal diff --git a/tests/step7_quote.mal b/impls/tests/step7_quote.mal similarity index 100% rename from tests/step7_quote.mal rename to impls/tests/step7_quote.mal diff --git a/tests/step8_macros.mal b/impls/tests/step8_macros.mal similarity index 100% rename from tests/step8_macros.mal rename to impls/tests/step8_macros.mal diff --git a/tests/step9_try.mal b/impls/tests/step9_try.mal similarity index 100% rename from tests/step9_try.mal rename to impls/tests/step9_try.mal diff --git a/tests/stepA_mal.mal b/impls/tests/stepA_mal.mal similarity index 100% rename from tests/stepA_mal.mal rename to impls/tests/stepA_mal.mal diff --git a/tests/test.txt b/impls/tests/test.txt similarity index 100% rename from tests/test.txt rename to impls/tests/test.txt diff --git a/tests/travis_trigger.sh b/impls/tests/travis_trigger.sh similarity index 100% rename from tests/travis_trigger.sh rename to impls/tests/travis_trigger.sh diff --git a/ts/.gitignore b/impls/ts/.gitignore similarity index 100% rename from ts/.gitignore rename to impls/ts/.gitignore diff --git a/ts/Dockerfile b/impls/ts/Dockerfile similarity index 100% rename from ts/Dockerfile rename to impls/ts/Dockerfile diff --git a/ts/Makefile b/impls/ts/Makefile similarity index 100% rename from ts/Makefile rename to impls/ts/Makefile diff --git a/ts/core.ts b/impls/ts/core.ts similarity index 100% rename from ts/core.ts rename to impls/ts/core.ts diff --git a/ts/env.ts b/impls/ts/env.ts similarity index 100% rename from ts/env.ts rename to impls/ts/env.ts diff --git a/ts/node_readline.ts b/impls/ts/node_readline.ts similarity index 100% rename from ts/node_readline.ts rename to impls/ts/node_readline.ts diff --git a/ts/package.json b/impls/ts/package.json similarity index 100% rename from ts/package.json rename to impls/ts/package.json diff --git a/ts/printer.ts b/impls/ts/printer.ts similarity index 100% rename from ts/printer.ts rename to impls/ts/printer.ts diff --git a/ts/reader.ts b/impls/ts/reader.ts similarity index 100% rename from ts/reader.ts rename to impls/ts/reader.ts diff --git a/ts/run b/impls/ts/run similarity index 100% rename from ts/run rename to impls/ts/run diff --git a/ts/step0_repl.ts b/impls/ts/step0_repl.ts similarity index 100% rename from ts/step0_repl.ts rename to impls/ts/step0_repl.ts diff --git a/ts/step1_read_print.ts b/impls/ts/step1_read_print.ts similarity index 100% rename from ts/step1_read_print.ts rename to impls/ts/step1_read_print.ts diff --git a/ts/step2_eval.ts b/impls/ts/step2_eval.ts similarity index 100% rename from ts/step2_eval.ts rename to impls/ts/step2_eval.ts diff --git a/ts/step3_env.ts b/impls/ts/step3_env.ts similarity index 100% rename from ts/step3_env.ts rename to impls/ts/step3_env.ts diff --git a/ts/step4_if_fn_do.ts b/impls/ts/step4_if_fn_do.ts similarity index 100% rename from ts/step4_if_fn_do.ts rename to impls/ts/step4_if_fn_do.ts diff --git a/ts/step5_tco.ts b/impls/ts/step5_tco.ts similarity index 100% rename from ts/step5_tco.ts rename to impls/ts/step5_tco.ts diff --git a/ts/step6_file.ts b/impls/ts/step6_file.ts similarity index 100% rename from ts/step6_file.ts rename to impls/ts/step6_file.ts diff --git a/ts/step7_quote.ts b/impls/ts/step7_quote.ts similarity index 100% rename from ts/step7_quote.ts rename to impls/ts/step7_quote.ts diff --git a/ts/step8_macros.ts b/impls/ts/step8_macros.ts similarity index 100% rename from ts/step8_macros.ts rename to impls/ts/step8_macros.ts diff --git a/ts/step9_try.ts b/impls/ts/step9_try.ts similarity index 100% rename from ts/step9_try.ts rename to impls/ts/step9_try.ts diff --git a/ts/stepA_mal.ts b/impls/ts/stepA_mal.ts similarity index 100% rename from ts/stepA_mal.ts rename to impls/ts/stepA_mal.ts diff --git a/ts/tsconfig.json b/impls/ts/tsconfig.json similarity index 100% rename from ts/tsconfig.json rename to impls/ts/tsconfig.json diff --git a/ts/types.ts b/impls/ts/types.ts similarity index 100% rename from ts/types.ts rename to impls/ts/types.ts diff --git a/vala/.gitignore b/impls/vala/.gitignore similarity index 100% rename from vala/.gitignore rename to impls/vala/.gitignore diff --git a/vala/Dockerfile b/impls/vala/Dockerfile similarity index 100% rename from vala/Dockerfile rename to impls/vala/Dockerfile diff --git a/vala/Makefile b/impls/vala/Makefile similarity index 100% rename from vala/Makefile rename to impls/vala/Makefile diff --git a/vala/README.md b/impls/vala/README.md similarity index 100% rename from vala/README.md rename to impls/vala/README.md diff --git a/vala/core.vala b/impls/vala/core.vala similarity index 100% rename from vala/core.vala rename to impls/vala/core.vala diff --git a/vala/env.vala b/impls/vala/env.vala similarity index 100% rename from vala/env.vala rename to impls/vala/env.vala diff --git a/vala/gc.vala b/impls/vala/gc.vala similarity index 100% rename from vala/gc.vala rename to impls/vala/gc.vala diff --git a/vala/printer.vala b/impls/vala/printer.vala similarity index 100% rename from vala/printer.vala rename to impls/vala/printer.vala diff --git a/vala/reader.vala b/impls/vala/reader.vala similarity index 100% rename from vala/reader.vala rename to impls/vala/reader.vala diff --git a/vala/run b/impls/vala/run similarity index 100% rename from vala/run rename to impls/vala/run diff --git a/vala/step0_repl.vala b/impls/vala/step0_repl.vala similarity index 100% rename from vala/step0_repl.vala rename to impls/vala/step0_repl.vala diff --git a/vala/step1_read_print.vala b/impls/vala/step1_read_print.vala similarity index 100% rename from vala/step1_read_print.vala rename to impls/vala/step1_read_print.vala diff --git a/vala/step2_eval.vala b/impls/vala/step2_eval.vala similarity index 100% rename from vala/step2_eval.vala rename to impls/vala/step2_eval.vala diff --git a/vala/step3_env.vala b/impls/vala/step3_env.vala similarity index 100% rename from vala/step3_env.vala rename to impls/vala/step3_env.vala diff --git a/vala/step4_if_fn_do.vala b/impls/vala/step4_if_fn_do.vala similarity index 100% rename from vala/step4_if_fn_do.vala rename to impls/vala/step4_if_fn_do.vala diff --git a/vala/step5_tco.vala b/impls/vala/step5_tco.vala similarity index 100% rename from vala/step5_tco.vala rename to impls/vala/step5_tco.vala diff --git a/vala/step6_file.vala b/impls/vala/step6_file.vala similarity index 100% rename from vala/step6_file.vala rename to impls/vala/step6_file.vala diff --git a/vala/step7_quote.vala b/impls/vala/step7_quote.vala similarity index 100% rename from vala/step7_quote.vala rename to impls/vala/step7_quote.vala diff --git a/vala/step8_macros.vala b/impls/vala/step8_macros.vala similarity index 100% rename from vala/step8_macros.vala rename to impls/vala/step8_macros.vala diff --git a/vala/step9_try.vala b/impls/vala/step9_try.vala similarity index 100% rename from vala/step9_try.vala rename to impls/vala/step9_try.vala diff --git a/vala/stepA_mal.vala b/impls/vala/stepA_mal.vala similarity index 100% rename from vala/stepA_mal.vala rename to impls/vala/stepA_mal.vala diff --git a/vala/types.vala b/impls/vala/types.vala similarity index 100% rename from vala/types.vala rename to impls/vala/types.vala diff --git a/vb/Dockerfile b/impls/vb/Dockerfile similarity index 100% rename from vb/Dockerfile rename to impls/vb/Dockerfile diff --git a/vb/Makefile b/impls/vb/Makefile similarity index 100% rename from vb/Makefile rename to impls/vb/Makefile diff --git a/vb/core.vb b/impls/vb/core.vb similarity index 100% rename from vb/core.vb rename to impls/vb/core.vb diff --git a/vb/env.vb b/impls/vb/env.vb similarity index 100% rename from vb/env.vb rename to impls/vb/env.vb diff --git a/vb/getline.cs b/impls/vb/getline.cs similarity index 100% rename from vb/getline.cs rename to impls/vb/getline.cs diff --git a/vb/printer.vb b/impls/vb/printer.vb similarity index 100% rename from vb/printer.vb rename to impls/vb/printer.vb diff --git a/vb/reader.vb b/impls/vb/reader.vb similarity index 100% rename from vb/reader.vb rename to impls/vb/reader.vb diff --git a/vb/readline.vb b/impls/vb/readline.vb similarity index 100% rename from vb/readline.vb rename to impls/vb/readline.vb diff --git a/vb/run b/impls/vb/run similarity index 100% rename from vb/run rename to impls/vb/run diff --git a/vb/step0_repl.vb b/impls/vb/step0_repl.vb similarity index 100% rename from vb/step0_repl.vb rename to impls/vb/step0_repl.vb diff --git a/vb/step1_read_print.vb b/impls/vb/step1_read_print.vb similarity index 100% rename from vb/step1_read_print.vb rename to impls/vb/step1_read_print.vb diff --git a/vb/step2_eval.vb b/impls/vb/step2_eval.vb similarity index 100% rename from vb/step2_eval.vb rename to impls/vb/step2_eval.vb diff --git a/vb/step3_env.vb b/impls/vb/step3_env.vb similarity index 100% rename from vb/step3_env.vb rename to impls/vb/step3_env.vb diff --git a/vb/step4_if_fn_do.vb b/impls/vb/step4_if_fn_do.vb similarity index 100% rename from vb/step4_if_fn_do.vb rename to impls/vb/step4_if_fn_do.vb diff --git a/vb/step5_tco.vb b/impls/vb/step5_tco.vb similarity index 100% rename from vb/step5_tco.vb rename to impls/vb/step5_tco.vb diff --git a/vb/step6_file.vb b/impls/vb/step6_file.vb similarity index 100% rename from vb/step6_file.vb rename to impls/vb/step6_file.vb diff --git a/vb/step7_quote.vb b/impls/vb/step7_quote.vb similarity index 100% rename from vb/step7_quote.vb rename to impls/vb/step7_quote.vb diff --git a/vb/step8_macros.vb b/impls/vb/step8_macros.vb similarity index 100% rename from vb/step8_macros.vb rename to impls/vb/step8_macros.vb diff --git a/vb/step9_try.vb b/impls/vb/step9_try.vb similarity index 100% rename from vb/step9_try.vb rename to impls/vb/step9_try.vb diff --git a/vb/stepA_mal.vb b/impls/vb/stepA_mal.vb similarity index 100% rename from vb/stepA_mal.vb rename to impls/vb/stepA_mal.vb diff --git a/vb/tests/step5_tco.mal b/impls/vb/tests/step5_tco.mal similarity index 100% rename from vb/tests/step5_tco.mal rename to impls/vb/tests/step5_tco.mal diff --git a/vb/types.vb b/impls/vb/types.vb similarity index 100% rename from vb/types.vb rename to impls/vb/types.vb diff --git a/vhdl/.gitignore b/impls/vhdl/.gitignore similarity index 100% rename from vhdl/.gitignore rename to impls/vhdl/.gitignore diff --git a/vhdl/Dockerfile b/impls/vhdl/Dockerfile similarity index 100% rename from vhdl/Dockerfile rename to impls/vhdl/Dockerfile diff --git a/vhdl/Makefile b/impls/vhdl/Makefile similarity index 100% rename from vhdl/Makefile rename to impls/vhdl/Makefile diff --git a/vhdl/core.vhdl b/impls/vhdl/core.vhdl similarity index 100% rename from vhdl/core.vhdl rename to impls/vhdl/core.vhdl diff --git a/vhdl/env.vhdl b/impls/vhdl/env.vhdl similarity index 100% rename from vhdl/env.vhdl rename to impls/vhdl/env.vhdl diff --git a/vhdl/pkg_readline.vhdl b/impls/vhdl/pkg_readline.vhdl similarity index 100% rename from vhdl/pkg_readline.vhdl rename to impls/vhdl/pkg_readline.vhdl diff --git a/vhdl/printer.vhdl b/impls/vhdl/printer.vhdl similarity index 100% rename from vhdl/printer.vhdl rename to impls/vhdl/printer.vhdl diff --git a/vhdl/reader.vhdl b/impls/vhdl/reader.vhdl similarity index 100% rename from vhdl/reader.vhdl rename to impls/vhdl/reader.vhdl diff --git a/vhdl/run b/impls/vhdl/run similarity index 100% rename from vhdl/run rename to impls/vhdl/run diff --git a/vhdl/run_vhdl.sh b/impls/vhdl/run_vhdl.sh similarity index 100% rename from vhdl/run_vhdl.sh rename to impls/vhdl/run_vhdl.sh diff --git a/vhdl/step0_repl.vhdl b/impls/vhdl/step0_repl.vhdl similarity index 100% rename from vhdl/step0_repl.vhdl rename to impls/vhdl/step0_repl.vhdl diff --git a/vhdl/step1_read_print.vhdl b/impls/vhdl/step1_read_print.vhdl similarity index 100% rename from vhdl/step1_read_print.vhdl rename to impls/vhdl/step1_read_print.vhdl diff --git a/vhdl/step2_eval.vhdl b/impls/vhdl/step2_eval.vhdl similarity index 100% rename from vhdl/step2_eval.vhdl rename to impls/vhdl/step2_eval.vhdl diff --git a/vhdl/step3_env.vhdl b/impls/vhdl/step3_env.vhdl similarity index 100% rename from vhdl/step3_env.vhdl rename to impls/vhdl/step3_env.vhdl diff --git a/vhdl/step4_if_fn_do.vhdl b/impls/vhdl/step4_if_fn_do.vhdl similarity index 100% rename from vhdl/step4_if_fn_do.vhdl rename to impls/vhdl/step4_if_fn_do.vhdl diff --git a/vhdl/step5_tco.vhdl b/impls/vhdl/step5_tco.vhdl similarity index 100% rename from vhdl/step5_tco.vhdl rename to impls/vhdl/step5_tco.vhdl diff --git a/vhdl/step6_file.vhdl b/impls/vhdl/step6_file.vhdl similarity index 100% rename from vhdl/step6_file.vhdl rename to impls/vhdl/step6_file.vhdl diff --git a/vhdl/step7_quote.vhdl b/impls/vhdl/step7_quote.vhdl similarity index 100% rename from vhdl/step7_quote.vhdl rename to impls/vhdl/step7_quote.vhdl diff --git a/vhdl/step8_macros.vhdl b/impls/vhdl/step8_macros.vhdl similarity index 100% rename from vhdl/step8_macros.vhdl rename to impls/vhdl/step8_macros.vhdl diff --git a/vhdl/step9_try.vhdl b/impls/vhdl/step9_try.vhdl similarity index 100% rename from vhdl/step9_try.vhdl rename to impls/vhdl/step9_try.vhdl diff --git a/vhdl/stepA_mal.vhdl b/impls/vhdl/stepA_mal.vhdl similarity index 100% rename from vhdl/stepA_mal.vhdl rename to impls/vhdl/stepA_mal.vhdl diff --git a/vhdl/types.vhdl b/impls/vhdl/types.vhdl similarity index 100% rename from vhdl/types.vhdl rename to impls/vhdl/types.vhdl diff --git a/vimscript/.gitignore b/impls/vimscript/.gitignore similarity index 100% rename from vimscript/.gitignore rename to impls/vimscript/.gitignore diff --git a/vimscript/Dockerfile b/impls/vimscript/Dockerfile similarity index 100% rename from vimscript/Dockerfile rename to impls/vimscript/Dockerfile diff --git a/vimscript/Makefile b/impls/vimscript/Makefile similarity index 100% rename from vimscript/Makefile rename to impls/vimscript/Makefile diff --git a/vimscript/core.vim b/impls/vimscript/core.vim similarity index 100% rename from vimscript/core.vim rename to impls/vimscript/core.vim diff --git a/vimscript/env.vim b/impls/vimscript/env.vim similarity index 100% rename from vimscript/env.vim rename to impls/vimscript/env.vim diff --git a/vimscript/printer.vim b/impls/vimscript/printer.vim similarity index 100% rename from vimscript/printer.vim rename to impls/vimscript/printer.vim diff --git a/vimscript/reader.vim b/impls/vimscript/reader.vim similarity index 100% rename from vimscript/reader.vim rename to impls/vimscript/reader.vim diff --git a/vimscript/readline.vim b/impls/vimscript/readline.vim similarity index 100% rename from vimscript/readline.vim rename to impls/vimscript/readline.vim diff --git a/vimscript/run b/impls/vimscript/run similarity index 100% rename from vimscript/run rename to impls/vimscript/run diff --git a/vimscript/run_vimscript.sh b/impls/vimscript/run_vimscript.sh similarity index 100% rename from vimscript/run_vimscript.sh rename to impls/vimscript/run_vimscript.sh diff --git a/vimscript/step0_repl.vim b/impls/vimscript/step0_repl.vim similarity index 100% rename from vimscript/step0_repl.vim rename to impls/vimscript/step0_repl.vim diff --git a/vimscript/step1_read_print.vim b/impls/vimscript/step1_read_print.vim similarity index 100% rename from vimscript/step1_read_print.vim rename to impls/vimscript/step1_read_print.vim diff --git a/vimscript/step2_eval.vim b/impls/vimscript/step2_eval.vim similarity index 100% rename from vimscript/step2_eval.vim rename to impls/vimscript/step2_eval.vim diff --git a/vimscript/step3_env.vim b/impls/vimscript/step3_env.vim similarity index 100% rename from vimscript/step3_env.vim rename to impls/vimscript/step3_env.vim diff --git a/vimscript/step4_if_fn_do.vim b/impls/vimscript/step4_if_fn_do.vim similarity index 100% rename from vimscript/step4_if_fn_do.vim rename to impls/vimscript/step4_if_fn_do.vim diff --git a/vimscript/step5_tco.vim b/impls/vimscript/step5_tco.vim similarity index 100% rename from vimscript/step5_tco.vim rename to impls/vimscript/step5_tco.vim diff --git a/vimscript/step6_file.vim b/impls/vimscript/step6_file.vim similarity index 100% rename from vimscript/step6_file.vim rename to impls/vimscript/step6_file.vim diff --git a/vimscript/step7_quote.vim b/impls/vimscript/step7_quote.vim similarity index 100% rename from vimscript/step7_quote.vim rename to impls/vimscript/step7_quote.vim diff --git a/vimscript/step8_macros.vim b/impls/vimscript/step8_macros.vim similarity index 100% rename from vimscript/step8_macros.vim rename to impls/vimscript/step8_macros.vim diff --git a/vimscript/step9_try.vim b/impls/vimscript/step9_try.vim similarity index 100% rename from vimscript/step9_try.vim rename to impls/vimscript/step9_try.vim diff --git a/vimscript/stepA_mal.vim b/impls/vimscript/stepA_mal.vim similarity index 100% rename from vimscript/stepA_mal.vim rename to impls/vimscript/stepA_mal.vim diff --git a/vimscript/tests/step5_tco.mal b/impls/vimscript/tests/step5_tco.mal similarity index 100% rename from vimscript/tests/step5_tco.mal rename to impls/vimscript/tests/step5_tco.mal diff --git a/vimscript/tests/stepA_mal.mal b/impls/vimscript/tests/stepA_mal.mal similarity index 100% rename from vimscript/tests/stepA_mal.mal rename to impls/vimscript/tests/stepA_mal.mal diff --git a/vimscript/types.vim b/impls/vimscript/types.vim similarity index 100% rename from vimscript/types.vim rename to impls/vimscript/types.vim diff --git a/vimscript/vimextras.c b/impls/vimscript/vimextras.c similarity index 100% rename from vimscript/vimextras.c rename to impls/vimscript/vimextras.c diff --git a/wasm/Dockerfile b/impls/wasm/Dockerfile similarity index 100% rename from wasm/Dockerfile rename to impls/wasm/Dockerfile diff --git a/wasm/Makefile b/impls/wasm/Makefile similarity index 100% rename from wasm/Makefile rename to impls/wasm/Makefile diff --git a/wasm/core.wam b/impls/wasm/core.wam similarity index 100% rename from wasm/core.wam rename to impls/wasm/core.wam diff --git a/wasm/debug.wam b/impls/wasm/debug.wam similarity index 100% rename from wasm/debug.wam rename to impls/wasm/debug.wam diff --git a/wasm/env.wam b/impls/wasm/env.wam similarity index 100% rename from wasm/env.wam rename to impls/wasm/env.wam diff --git a/wasm/mem.wam b/impls/wasm/mem.wam similarity index 100% rename from wasm/mem.wam rename to impls/wasm/mem.wam diff --git a/wasm/node_readline.js b/impls/wasm/node_readline.js similarity index 100% rename from wasm/node_readline.js rename to impls/wasm/node_readline.js diff --git a/wasm/package.json b/impls/wasm/package.json similarity index 100% rename from wasm/package.json rename to impls/wasm/package.json diff --git a/wasm/platform_direct.wam b/impls/wasm/platform_direct.wam similarity index 100% rename from wasm/platform_direct.wam rename to impls/wasm/platform_direct.wam diff --git a/wasm/platform_libc.wam b/impls/wasm/platform_libc.wam similarity index 100% rename from wasm/platform_libc.wam rename to impls/wasm/platform_libc.wam diff --git a/wasm/platform_wasi.wam b/impls/wasm/platform_wasi.wam similarity index 100% rename from wasm/platform_wasi.wam rename to impls/wasm/platform_wasi.wam diff --git a/wasm/printer.wam b/impls/wasm/printer.wam similarity index 100% rename from wasm/printer.wam rename to impls/wasm/printer.wam diff --git a/wasm/printf.wam b/impls/wasm/printf.wam similarity index 100% rename from wasm/printf.wam rename to impls/wasm/printf.wam diff --git a/wasm/reader.wam b/impls/wasm/reader.wam similarity index 100% rename from wasm/reader.wam rename to impls/wasm/reader.wam diff --git a/wasm/run b/impls/wasm/run similarity index 100% rename from wasm/run rename to impls/wasm/run diff --git a/wasm/run.js b/impls/wasm/run.js similarity index 100% rename from wasm/run.js rename to impls/wasm/run.js diff --git a/wasm/step0_repl.wam b/impls/wasm/step0_repl.wam similarity index 100% rename from wasm/step0_repl.wam rename to impls/wasm/step0_repl.wam diff --git a/wasm/step1_read_print.wam b/impls/wasm/step1_read_print.wam similarity index 100% rename from wasm/step1_read_print.wam rename to impls/wasm/step1_read_print.wam diff --git a/wasm/step2_eval.wam b/impls/wasm/step2_eval.wam similarity index 100% rename from wasm/step2_eval.wam rename to impls/wasm/step2_eval.wam diff --git a/wasm/step3_env.wam b/impls/wasm/step3_env.wam similarity index 100% rename from wasm/step3_env.wam rename to impls/wasm/step3_env.wam diff --git a/wasm/step4_if_fn_do.wam b/impls/wasm/step4_if_fn_do.wam similarity index 100% rename from wasm/step4_if_fn_do.wam rename to impls/wasm/step4_if_fn_do.wam diff --git a/wasm/step5_tco.wam b/impls/wasm/step5_tco.wam similarity index 100% rename from wasm/step5_tco.wam rename to impls/wasm/step5_tco.wam diff --git a/wasm/step6_file.wam b/impls/wasm/step6_file.wam similarity index 100% rename from wasm/step6_file.wam rename to impls/wasm/step6_file.wam diff --git a/wasm/step7_quote.wam b/impls/wasm/step7_quote.wam similarity index 100% rename from wasm/step7_quote.wam rename to impls/wasm/step7_quote.wam diff --git a/wasm/step8_macros.wam b/impls/wasm/step8_macros.wam similarity index 100% rename from wasm/step8_macros.wam rename to impls/wasm/step8_macros.wam diff --git a/wasm/step9_try.wam b/impls/wasm/step9_try.wam similarity index 100% rename from wasm/step9_try.wam rename to impls/wasm/step9_try.wam diff --git a/wasm/stepA_mal.wam b/impls/wasm/stepA_mal.wam similarity index 100% rename from wasm/stepA_mal.wam rename to impls/wasm/stepA_mal.wam diff --git a/wasm/string.wam b/impls/wasm/string.wam similarity index 100% rename from wasm/string.wam rename to impls/wasm/string.wam diff --git a/wasm/types.wam b/impls/wasm/types.wam similarity index 100% rename from wasm/types.wam rename to impls/wasm/types.wam diff --git a/wren/Dockerfile b/impls/wren/Dockerfile similarity index 100% rename from wren/Dockerfile rename to impls/wren/Dockerfile diff --git a/wren/Makefile b/impls/wren/Makefile similarity index 100% rename from wren/Makefile rename to impls/wren/Makefile diff --git a/wren/README.md b/impls/wren/README.md similarity index 100% rename from wren/README.md rename to impls/wren/README.md diff --git a/wren/core.wren b/impls/wren/core.wren similarity index 100% rename from wren/core.wren rename to impls/wren/core.wren diff --git a/wren/env.wren b/impls/wren/env.wren similarity index 100% rename from wren/env.wren rename to impls/wren/env.wren diff --git a/wren/interop.wren b/impls/wren/interop.wren similarity index 100% rename from wren/interop.wren rename to impls/wren/interop.wren diff --git a/wren/printer.wren b/impls/wren/printer.wren similarity index 100% rename from wren/printer.wren rename to impls/wren/printer.wren diff --git a/wren/reader.wren b/impls/wren/reader.wren similarity index 100% rename from wren/reader.wren rename to impls/wren/reader.wren diff --git a/wren/readline.wren b/impls/wren/readline.wren similarity index 100% rename from wren/readline.wren rename to impls/wren/readline.wren diff --git a/wren/run b/impls/wren/run similarity index 100% rename from wren/run rename to impls/wren/run diff --git a/wren/step0_repl.wren b/impls/wren/step0_repl.wren similarity index 100% rename from wren/step0_repl.wren rename to impls/wren/step0_repl.wren diff --git a/wren/step1_read_print.wren b/impls/wren/step1_read_print.wren similarity index 100% rename from wren/step1_read_print.wren rename to impls/wren/step1_read_print.wren diff --git a/wren/step2_eval.wren b/impls/wren/step2_eval.wren similarity index 100% rename from wren/step2_eval.wren rename to impls/wren/step2_eval.wren diff --git a/wren/step3_env.wren b/impls/wren/step3_env.wren similarity index 100% rename from wren/step3_env.wren rename to impls/wren/step3_env.wren diff --git a/wren/step4_if_fn_do.wren b/impls/wren/step4_if_fn_do.wren similarity index 100% rename from wren/step4_if_fn_do.wren rename to impls/wren/step4_if_fn_do.wren diff --git a/wren/step5_tco.wren b/impls/wren/step5_tco.wren similarity index 100% rename from wren/step5_tco.wren rename to impls/wren/step5_tco.wren diff --git a/wren/step6_file.wren b/impls/wren/step6_file.wren similarity index 100% rename from wren/step6_file.wren rename to impls/wren/step6_file.wren diff --git a/wren/step7_quote.wren b/impls/wren/step7_quote.wren similarity index 100% rename from wren/step7_quote.wren rename to impls/wren/step7_quote.wren diff --git a/wren/step8_macros.wren b/impls/wren/step8_macros.wren similarity index 100% rename from wren/step8_macros.wren rename to impls/wren/step8_macros.wren diff --git a/wren/step9_try.wren b/impls/wren/step9_try.wren similarity index 100% rename from wren/step9_try.wren rename to impls/wren/step9_try.wren diff --git a/wren/stepA_mal.wren b/impls/wren/stepA_mal.wren similarity index 100% rename from wren/stepA_mal.wren rename to impls/wren/stepA_mal.wren diff --git a/wren/tests/step5_tco.mal b/impls/wren/tests/step5_tco.mal similarity index 100% rename from wren/tests/step5_tco.mal rename to impls/wren/tests/step5_tco.mal diff --git a/wren/tests/stepA_mal.mal b/impls/wren/tests/stepA_mal.mal similarity index 100% rename from wren/tests/stepA_mal.mal rename to impls/wren/tests/stepA_mal.mal diff --git a/wren/types.wren b/impls/wren/types.wren similarity index 100% rename from wren/types.wren rename to impls/wren/types.wren diff --git a/wren/wren-add-gettimeofday.patch b/impls/wren/wren-add-gettimeofday.patch similarity index 100% rename from wren/wren-add-gettimeofday.patch rename to impls/wren/wren-add-gettimeofday.patch diff --git a/yorick/Dockerfile b/impls/yorick/Dockerfile similarity index 100% rename from yorick/Dockerfile rename to impls/yorick/Dockerfile diff --git a/yorick/Makefile b/impls/yorick/Makefile similarity index 100% rename from yorick/Makefile rename to impls/yorick/Makefile diff --git a/yorick/core.i b/impls/yorick/core.i similarity index 100% rename from yorick/core.i rename to impls/yorick/core.i diff --git a/yorick/env.i b/impls/yorick/env.i similarity index 100% rename from yorick/env.i rename to impls/yorick/env.i diff --git a/yorick/hash.i b/impls/yorick/hash.i similarity index 100% rename from yorick/hash.i rename to impls/yorick/hash.i diff --git a/yorick/printer.i b/impls/yorick/printer.i similarity index 100% rename from yorick/printer.i rename to impls/yorick/printer.i diff --git a/yorick/reader.i b/impls/yorick/reader.i similarity index 100% rename from yorick/reader.i rename to impls/yorick/reader.i diff --git a/yorick/run b/impls/yorick/run similarity index 100% rename from yorick/run rename to impls/yorick/run diff --git a/yorick/step0_repl.i b/impls/yorick/step0_repl.i similarity index 100% rename from yorick/step0_repl.i rename to impls/yorick/step0_repl.i diff --git a/yorick/step1_read_print.i b/impls/yorick/step1_read_print.i similarity index 100% rename from yorick/step1_read_print.i rename to impls/yorick/step1_read_print.i diff --git a/yorick/step2_eval.i b/impls/yorick/step2_eval.i similarity index 100% rename from yorick/step2_eval.i rename to impls/yorick/step2_eval.i diff --git a/yorick/step3_env.i b/impls/yorick/step3_env.i similarity index 100% rename from yorick/step3_env.i rename to impls/yorick/step3_env.i diff --git a/yorick/step4_if_fn_do.i b/impls/yorick/step4_if_fn_do.i similarity index 100% rename from yorick/step4_if_fn_do.i rename to impls/yorick/step4_if_fn_do.i diff --git a/yorick/step5_tco.i b/impls/yorick/step5_tco.i similarity index 100% rename from yorick/step5_tco.i rename to impls/yorick/step5_tco.i diff --git a/yorick/step6_file.i b/impls/yorick/step6_file.i similarity index 100% rename from yorick/step6_file.i rename to impls/yorick/step6_file.i diff --git a/yorick/step7_quote.i b/impls/yorick/step7_quote.i similarity index 100% rename from yorick/step7_quote.i rename to impls/yorick/step7_quote.i diff --git a/yorick/step8_macros.i b/impls/yorick/step8_macros.i similarity index 100% rename from yorick/step8_macros.i rename to impls/yorick/step8_macros.i diff --git a/yorick/step9_try.i b/impls/yorick/step9_try.i similarity index 100% rename from yorick/step9_try.i rename to impls/yorick/step9_try.i diff --git a/yorick/stepA_mal.i b/impls/yorick/stepA_mal.i similarity index 100% rename from yorick/stepA_mal.i rename to impls/yorick/stepA_mal.i diff --git a/yorick/tests/stepA_mal.mal b/impls/yorick/tests/stepA_mal.mal similarity index 100% rename from yorick/tests/stepA_mal.mal rename to impls/yorick/tests/stepA_mal.mal diff --git a/yorick/types.i b/impls/yorick/types.i similarity index 100% rename from yorick/types.i rename to impls/yorick/types.i diff --git a/zig/Dockerfile b/impls/zig/Dockerfile similarity index 100% rename from zig/Dockerfile rename to impls/zig/Dockerfile diff --git a/zig/Makefile b/impls/zig/Makefile similarity index 100% rename from zig/Makefile rename to impls/zig/Makefile diff --git a/zig/build.zig b/impls/zig/build.zig similarity index 100% rename from zig/build.zig rename to impls/zig/build.zig diff --git a/zig/core.zig b/impls/zig/core.zig similarity index 100% rename from zig/core.zig rename to impls/zig/core.zig diff --git a/zig/env.zig b/impls/zig/env.zig similarity index 100% rename from zig/env.zig rename to impls/zig/env.zig diff --git a/zig/error.zig b/impls/zig/error.zig similarity index 100% rename from zig/error.zig rename to impls/zig/error.zig diff --git a/zig/hmap.zig b/impls/zig/hmap.zig similarity index 100% rename from zig/hmap.zig rename to impls/zig/hmap.zig diff --git a/zig/linked_list.zig b/impls/zig/linked_list.zig similarity index 100% rename from zig/linked_list.zig rename to impls/zig/linked_list.zig diff --git a/zig/logging_alloc.zig b/impls/zig/logging_alloc.zig similarity index 100% rename from zig/logging_alloc.zig rename to impls/zig/logging_alloc.zig diff --git a/zig/printer.zig b/impls/zig/printer.zig similarity index 100% rename from zig/printer.zig rename to impls/zig/printer.zig diff --git a/zig/reader.zig b/impls/zig/reader.zig similarity index 100% rename from zig/reader.zig rename to impls/zig/reader.zig diff --git a/zig/readline.zig b/impls/zig/readline.zig similarity index 100% rename from zig/readline.zig rename to impls/zig/readline.zig diff --git a/zig/run b/impls/zig/run similarity index 100% rename from zig/run rename to impls/zig/run diff --git a/zig/step0_repl.zig b/impls/zig/step0_repl.zig similarity index 100% rename from zig/step0_repl.zig rename to impls/zig/step0_repl.zig diff --git a/zig/step1_read_print.zig b/impls/zig/step1_read_print.zig similarity index 100% rename from zig/step1_read_print.zig rename to impls/zig/step1_read_print.zig diff --git a/zig/step2_eval.zig b/impls/zig/step2_eval.zig similarity index 100% rename from zig/step2_eval.zig rename to impls/zig/step2_eval.zig diff --git a/zig/step3_env.zig b/impls/zig/step3_env.zig similarity index 100% rename from zig/step3_env.zig rename to impls/zig/step3_env.zig diff --git a/zig/step4_if_fn_do.zig b/impls/zig/step4_if_fn_do.zig similarity index 100% rename from zig/step4_if_fn_do.zig rename to impls/zig/step4_if_fn_do.zig diff --git a/zig/step5_tco.zig b/impls/zig/step5_tco.zig similarity index 100% rename from zig/step5_tco.zig rename to impls/zig/step5_tco.zig diff --git a/zig/step6_file.zig b/impls/zig/step6_file.zig similarity index 100% rename from zig/step6_file.zig rename to impls/zig/step6_file.zig diff --git a/zig/step7_quote.zig b/impls/zig/step7_quote.zig similarity index 100% rename from zig/step7_quote.zig rename to impls/zig/step7_quote.zig diff --git a/zig/step8_macros.zig b/impls/zig/step8_macros.zig similarity index 100% rename from zig/step8_macros.zig rename to impls/zig/step8_macros.zig diff --git a/zig/step9_try.zig b/impls/zig/step9_try.zig similarity index 100% rename from zig/step9_try.zig rename to impls/zig/step9_try.zig diff --git a/zig/stepA_mal.zig b/impls/zig/stepA_mal.zig similarity index 100% rename from zig/stepA_mal.zig rename to impls/zig/stepA_mal.zig diff --git a/zig/types.zig b/impls/zig/types.zig similarity index 100% rename from zig/types.zig rename to impls/zig/types.zig diff --git a/zig/utils.zig b/impls/zig/utils.zig similarity index 100% rename from zig/utils.zig rename to impls/zig/utils.zig diff --git a/lib b/lib new file mode 120000 index 00000000..092ad3b8 --- /dev/null +++ b/lib @@ -0,0 +1 @@ +impls/lib \ No newline at end of file diff --git a/tests b/tests new file mode 120000 index 00000000..bfc25517 --- /dev/null +++ b/tests @@ -0,0 +1 @@ +impls/tests \ No newline at end of file