- Add a `vec` built-in function in step7 so that `quasiquote` does not
require `apply` from step9.
- Introduce quasiquoteexpand special in order to help debugging step7.
This may also prepare newcomers to understand step8.
- Add soft tests.
- Do not quote numbers, strings and so on.
Should ideally have been in separate commits:
- elisp: simplify and fix (keyword :k)
- factor: fix copy/paste error in let*/step7, simplify eval-ast.
- guile: improve list/vector types
- haskell: revert evaluation during quasiquote
- logo, make: cosmetic issues
OSH is a bash-compatible shell: https://www.oilshell.org/
reader.sh:
- Put the constant regex pattern in a string literal. This simplifies
it by removing mixed regex vs. shell quoting, and implicit
concatenation with $'\n'.
This is suggested by the bash manual:
https://www.gnu.org/software/bash/manual/bash.html#Conditional-Constructs
"Storing the regular expression in a shell variable is often a useful
way to avoid problems with quoting characters that are special to the
shell."
- Initialize __reader_tokens as an array, not a string.
https://www.oilshell.org/release/0.8.pre6/doc/known-differences.html#values-are-tagged-with-types-not-cells
env.sh:
Simplify quoting in 'eval' expressions. This quotes associative array keys,
which is required by OSH to avoid dynamic parsing.
https://www.oilshell.org/release/0.8.pre6/doc/known-differences.html#strings-vs-bare-words-in-array-indiceshttp://www.oilshell.org/blog/2016/10/20.html
core.sh:
Quote associative array keys. '<' and '>' are shell operators and OSH doesn't
have a special case when inside [].
----
With this change, OSH can run tests just like bash, e.g.:
$ osh impls/bash/stepA_mal.sh tests/step4_if_fn_do.mal
----
Test results are the same before and after this change:
$ NO_DOCKER=1 ./.travis_test.sh test bash
FAILURES:
SOFT FAILED TEST (line 295): (f (+ 1 1)) -> ['',true]:
Expected : '.*\ntrue'
Got : '(f (+ 1 1))\nfalse'
TEST RESULTS (for ../tests/stepA_mal.mal):
1: soft failing tests
0: failing tests
106: passing tests
107: total tests
- Reorder README to have implementation list after "learning tool"
bullet.
- This also moves tests/ and libs/ into impls. It would be preferrable
to have these directories at the top level. However, this causes
difficulties with the wasm implementations which need pre-open
directories and have trouble with paths starting with "../../". So
in lieu of that, symlink those directories to the top-level.
- Move the run_argv_test.sh script into the tests directory for
general hygiene.