Untyped syntax is a defining chracteristic of shells.
This answer by Jörg W Mittag is very convincing:
https://stackoverflow.com/a/3640403/512904
This table in particular is very illuminating:
| Ruby | Bash
-----------------------------------------
number | 123 | 123
string | '123' | 123
regexp | /123/ | 123
file | File.open('123') | 123
file descriptor | IO.open('123') | 123
URI | URI.parse('123') | 123
command | `123` | 123
Here's a similar table with add your example's syntatic elements: | Lisp | Bash
-----------------------------------------
command | `ls` | ls
function | (myfunc) | myfunc
string | "afile" | afile
redirection | (out-to "afile") | >afile