文法の修正

before

func = fun x y do return x + y; end;
obj = { a = b; c = d; };
list = [ a b c ];
map = %[ a -> b; c -> d; ];
# line comment
// line comment

after

func = fun x y { return x + y; };
obj = { a = b; c = d; }
list = $[ a b c ];
map = %[ a -> b; c -> d; ];
set = #[ a b c ];
#! shebang
// line comment

キモ

  • end の後に ";" が来る可能性があるのは匿名関数だけなので、do 〜 end ではなく { 〜 } を使ってその他の構文と合わせる
  • リスト表記とインデクサが競合していたので、リスト表記を $[ 〜 ] に修正
  • マップ表記はそのまま
  • ついでなのでセット表記も追加。
  • オブジェクト表記はそのまま
  • 1行コメントはセット表記に取られたので、shebang 用に "#!" の行のみコメントアウトすることに
  • "//" でのコメントは従来どおり使用可能
  • リストとマップとセットは [ 〜 ] で統一
  • 関数とオブジェクトは { 〜 } で統一。どちらも内部に文が書けます