Mold 基礎文法最速マスター

Mold の話をする前に、「基礎文法最速マスター」は何ではないかという話をしよう。
「基礎文法最速マスター」は、他の言語を思い通りに使える人向けに書いたもので、変数が何かということも分からない赤ん坊向けに書かれたものではない。
例えば、Mold を知らない普通にコードを書ける人が、「Mold 基礎文法最速マスター」を読めば、Mold を書ける様になるだろうことを想定して書かれている。

それと…えーっと、プログラミング言語を学習している平均より下の能力を持っている人たちが陥っている負のスパイラルについては……言わないでおこう。

まあ、いいや。
私が思ったのは未だ存在していない言語の「基礎文法最速マスター」を書くことで、抜けているところを発見するテストになるんじゃないかということだった。

もうわかったと思うけど、Mold は未だ処理系が存在しない架空のスクリプト言語だ。
Mold はブレース方式*1の ALGOL 属言語グループに入るはずだ。 Rust や Go、RubyLisp などなどの影響を受けていて、クロージャが第一等市民として迎え入れられている。
決まったホーリー・トリニティ*2は無いんだけど、後々出来ていくんじゃないかな(震え声)。

1. 基礎

1-1. 表示

コンソールに文字列を表示*3する時は println を使う。

println "Hello, World!";

もちろん、println は関数であり、文などではない。
Mold では関数に付ける括弧を省略することができる。

1-2. コメント

コメントは昔ながらの // を使う。

// プログラマーはこの文章を読むことが出来ない。

1-3. 変数宣言

変数を宣言するときは、let 式を使う。

let foo = 42;

型推論により、foo は整数型として認識され、整数以外の値を設定しようとするとエラーとなる。
明示的に型を指定することもできる:

let bar : int = 42;

変数の宣言を行わずに変数を使おうとするとエラーとなる。

1-3-1. 定数の宣言

const PI : double = 3.14159265359;

1-4. 変数のスコープ

{ // A
    let foo = 42;
    
    {  // B
        let bar = foo;
    }
    foo = bar;     // エラー!!
}

1-5. セミコロンと式と括弧

セミコロン省略可能。

let foo = 42

と書いても:

let foo = 42;

と書いても特に問題ないが、1 つの行に複数の式を書く場合はセミコロンが必要。

let foo = 2; foo ++;

ということでまた次回。

参考

*1:ALGOL における begin と end をそれぞれ開き波括弧と閉じ波括弧で置き換えたという程度の意味

*2:ケイジャン料理における玉ねぎ、セロリ、ピーマンのような 3 つの代表的な要素のこと

*3:標準出力に文字列を書き込むことと等価。