FR: Better REPL output
Here are some of the weird output in REPL:
> {1 1.0 2 2.0}
=> (() () () () () () () () () () () () () ((1 1.0)) ((2 2.0)) ()) ;; Expect: {1 1.0 2 2.0}
> (and true true true)
=> (if true (if true true false) false) ;; Expect: true
Hi, thanks for reporting. I agree these are quite strange and confusing 😅 Will fix! (eventually)
The map is an unfortunate side effect of the internal implementation bleeding out. We had an idea to implement a dynamic types and a protocol dispatcher (see #1177) but the implementation was deemed a little too magical (totally fair). I mention this because that would have meant that dynamic maps could have an implementation for str, which currently is not possible (it just prints lists, as shown above).
The other issue is the long-standing macro expansion versus evaluation in the REPL. I thought we had an approach to make it work at some point, but I guess it was never implemented :( My bad!