Interesting you mention TCL's focus on command-line usability. I think it was a great step forward there, but there's a fundamental thing it's missing, which is complexity extending to the right. What I mean by that is, say you have a command like
tcl> foo { bar baz zot }
The only way to use the result of the command is to surround it with square brackets, which requires me to jump all over the line:
tcl> quux [foo { bar baz zot }]
This makes it pretty difficult on a readline-style interface to cobble together small commands Unix-style.
And while interactive languages may be a small niche today, I think part of the reason is that nobody's solved the usability problems as elegantly as the Unix shell has.
tcl> foo { bar baz zot }
The only way to use the result of the command is to surround it with square brackets, which requires me to jump all over the line:
tcl> quux [foo { bar baz zot }]
This makes it pretty difficult on a readline-style interface to cobble together small commands Unix-style.
And while interactive languages may be a small niche today, I think part of the reason is that nobody's solved the usability problems as elegantly as the Unix shell has.