Clojureのコマンドライン引数解釈が特殊かも

プログラムに対して空白を含む文字列を与えたとき、C や Java ならばこうなります

$ ./program '[1 2 3]'
 => "[1 2 3]" という文字列1つが引数

しかし、Clojureだとこうなるみたいです。

$ ./program '[1 2 3]'
 => "[1" "2" "3]" という3つの文字列

ひとつの文字列として与えたい場合、もう一つクオートするか、

$ ./program '"[1 2 3]"'
 => "[1 2 3]"

空白をエスケープしないとダメみたいです。

$ ./program '[1\ 2\ 3]'
 => "[1 2 3]"

引数としてリストやマップを文字列で与えて、read-string で評価しちゃおうなんて考えていると引っ掛ります。というか引っ掛りました。

追記

これはプログラムをインタプリタで実行した場合の挙動のようです。lein uberjar 等でコンパイルした jar を実行する場合、Javaと同じ挙動になります。