As part of my ongoing effort to make someone else use my unit test framework (https://bitbucket.org/zck/unit-test.arc/), I've been converting the Anarki unit tests to use unit-test.arc (at akkartik's suggestion).

I ran into an issue with lib/tests/core-typing-test.arc. The existing tests pass, but when converting them into my test framework, I ran into an issue:

Either way, I think the existence of the feature is a point worth discussing. I think it's a very confusing feature, especially since there seems to be no way to have a string literal with an ampersand:

Yeah, atstrings is a pretty awkward feature. It is possible to opt in and out of it, but only at the top level:

(declare 'atstrings t)
(declare 'atstrings nil)

This affects how strings are processed by 'ac. That is, it only matters for compilation/macroexpansion phases.

I see some of Anarki's tests set 'atstrings to a particular value as they go along, but then they don't reset it. This might be why you see some tests working when yours don't.

(In Anarki, the declarations* global table holds these values, so it's technically possible to save and restore the old value by reading that table.)

---

The REPL behavior you observed is confusing in a different way than you thought. It treated your input as a malformed command, three well-formed commands you didn't know you were entering, and finally an unfinished string literal:

"abc\@
example.com
"
"
abc@@example.com
"

This is where the "\n" response came from, and it's why you received multiple responses per input line.