It's tricky to think of what to do to print out things that don't have representation.
For example, isotopes ("antiforms") don't have representations and cannot be molded. (For a proposal of the exception of MOLD of splices, see MOLD/ONLY vs spread)
So what's traditionally been done is just render it as a quasiform (so the tilde at the beginning hints something its up), and then add a comment at the end of the rendering.
The representational issue is a bit of a thorn in the console, but you have to print something. (Well, unless it's a void, where printing nothing is the design.)
Could it perhaps work to just print anti 'null? (Or unmeta 'null, as the case may be.) After all, they don’t really have a syntactic representation to print out in the first place.
For prior art, Haskell often does this kind of thing:
Avoiding that direction and having the console endorsing giving back things that evaluate to the result is another idea:
>> first [a b c]
== 'a
>> any [1 > 2, 3 > 4]
== ~null~
But would be confusing if you didn't do it systemically, e.g. left the quote off of inert things:
>> first [[a b] c d]
== [a b]
>> first ['[a b] c d]
== ''[a b]
So I think the quote would probably need to always be there... and maybe people would get used to it to the point it would be acceptable. Generic quoting opens the door to it being an option.
>> print "Void outputs should still be skipped, probably?"
Void outputs should still be skipped, probably?
== '
>>
This could work if done systematically… but then, you have to consider that you’re no longer looking at the result of your evaluation, but something which evaluates to the result. That feels confusing.
I think there’s a reasonable compromise similar to what is done now: show the literal form of the value if it has one, otherwise give back code which evaluates to that value. That would be unambiguous and consistent, but still easy to read.