タプル関係の実装をした
ローカルタプル
rowlのタプルは非ボックス化型とした。
こんな感じで書くと、レジスタもしくはスタック上にタプルが構築される。
x : (1, (2, 3));
ボックス化したいときはC++のnewのように明示的に書くことにする(syntaxなど考え中)。
パターンマッチング
タプルの中身取り出すときはパターンマッチで取り出す。
x : (1, (2, 3)); (_, y) : x; (z, _) : y;
とかくとyが(2,3)、zが2で初期化される。
x : (1, (2, 3)); (_, (z, _)): x;
のようにネストしたパターンもOK。
タプルの特定の値を書き換える構文はまだ作っていない。下のようなのにすれば新しい記号とか用意しなくて良いかな。見た目ダサいけど・・・。
x : (1, (2, 3)); x = (_, (4, _)); (% x内の2を4に書き換える %);