Basic: step8 basics. Fix def!, let*, concat, scalars.
authorJoel Martin <github@martintribe.org>
Fri, 7 Oct 2016 03:22:57 +0000 (22:22 -0500)
committerJoel Martin <github@martintribe.org>
Fri, 7 Oct 2016 03:22:57 +0000 (22:22 -0500)
commit70f29a2b3c28ea4ad56597a886baad90e117c824
treef997a1842ac5aa11666d6d959189db42771c41a9
parent60ef223c3cbc7b11a5e3ef666f38ac6f0a242e1e
Basic: step8 basics. Fix def!, let*, concat, scalars.

- Move apply logic in swap! to APPLY function in types and use that
  for macroexpand
- Abort def! if error before updating the environment
- let* wasn't properly saving A2% for the final eval. Also, the
  environment release check should be against the top-level EVAL env,
  not the root repl env.
- (concat (list) ...) was broken so fix it to ignore empty lists that
  aren't in the trailing position.
- nil, false and true in the reader were always being returned as
  references (with an ref cnt) but we have the assumption that
  references (14) are not ref cnt'd and are always part of a compound
  type so fix the reader to just return the interned addresses.
14 files changed:
basic/Makefile
basic/core.in.bas
basic/debug.in.bas
basic/env.in.bas
basic/printer.in.bas
basic/reader.in.bas
basic/step3_env.in.bas
basic/step4_if_fn_do.in.bas
basic/step5_tco.in.bas
basic/step6_file.in.bas
basic/step7_quote.in.bas
basic/step8_macros.in.bas [new file with mode: 0755]
basic/types.in.bas
tests/step3_env.mal