リストの入れ子が文法的な意味で問題だ

単純にリストのリストを作ろうとして

[[1] [2] [3]]

にしちゃうと、Java でたとえるならば

new int[] { 1 } [2] [3];

になっちゃうのが問題だ。

解決策その1:リストに区切りを設ける
[[1], [2], [3]]   // Java とあわせてみる
[[1]; [2]; [3]]   // ";" は式の終わりを表す記号
解決策その2:リスト生成に new とか list とかをくっつける
new[new[1] new[2] new[3]]
list[list[1] list[2] list[3]]
解決策その3:インデクサの文法を変える
[1]@2     // HSP 形式
[1]!!2    // Haskell 形式
[1] at: 2 // メソッドにしてしまう

さてどうするか。その1はメッセージカスケードと紛らわしい(けど衝突はしない)、その2は冗長だな。その3はこれが上手く馴染むのかどうか。
区切りを設けるときには、リストパターンの文法と toString したときの表記も変更しなければならないのを注意しなければいけないな。
で、より深刻な問題は、これとまったく同じ問題が、メソッド呼び出しの箇所でも起こりうるってことなんだよな。二項演算子については気をつけてたんだけど、まさかここでバッティングするとはおもわなんだ……。