Fluff 言語入門
この架空言語入門は ここ を参考にして書かれました。
概要
- Fluff は FLVM という仮想マシンの上で動くよ!(そのはず) - Fluff タイプ・チェッカーっていうのがあるよ!(Fluff パッケージ/ビルドに含まれているはず)
- オプションで Fluff 対応エディタ、 vscode-fluff がインストールされた VSCode がオススメ(したい)
最初の Fluff コード
Fluff のインストール
Fluff のインストール方法については Fluff スタートガイドをご覧ください。
Fluff をインストールすると Fluff タイプ・チェッカーが使用できるようになるため、実行する前にコードを静的にチェックすることができます。 これはコンパイラではありません。 むしろ、コードの実行中、または実行後ではなく、実行前に動的プログラミングエラーを補足しようとする超高速コードアナライザーです。
タイプチェッカーは fl-analyzer
と呼ばれます。 fluff パッケージに付いてくる予定です。
Fluff タイプ・チェッカーの設定
それでは Fluff コードを保存するディレクトリを選択します。
このディレクトリで fl-analyzer init
と実行するか、 touch .flconfig
と実行してください。 これによって fl-analyzer
がタイプ・チェックするコードのルートとして検索する空のファイルが作成されます。
コードを適切に分析するには、タイプ・チェッカーがグローバル分析を実行し、全てのコードを見ることができるようにする必要があります。
最初の Fluff プログラムを書く
あなたがお好きなテキストエディタ(Emacs、Vim、VSCode などで)を使用して次のコードで first.fl
というファイルを作成しましょう:
namespace Fluff::GettingStarted::MyFirstProgram;
[__EntryPoint__]
function main() : void {
say "Welcome to Fluff!\n\n";
::printf( "Table of Squares\n"
"----------------\n");
for ( let i = -5; i <= 5; ++ i ) {
::printf( " %2d %2d \n", i, i * i );
}
::printf( "----------------\n" );
exit( 0 );
}
このガイドはぷろぐらみんぐの知識があることを前提としています。 Fluff のルックアンドフィールは C++ と非常に似ていますが、C や C++、C#、Java、JavaScript、Perl、Raku で共有される多くの構文をサポートしています。 この例について注意すべき重要なポイントは次のとおりです:
- このコードは
Fluff::GettingStarted::MyFirstProgram
という一意の任意の名前空間に属しています。 main
は引数を持たない関数であり、戻り値の型はvoid
であるため、値を返しません。 更にこの関数はプログラムが実行を開始する場所です。つまり、main
はエントリ関数です。say
は文字列と改行を標準出力に書き込みます。printf
も標準出力に書き込みますが、この場合、整数列を右揃えにするためのフォーマット制御を提供します。for
ループの変数i
は -5 から 1 ずつ加算されて最終的には 5 になり、反復ごとにi
の値とその 2 乗された値が別々の行に一緒に書き出されます。
タイプ・チェッカーを実行する
VSCode で vscode-fluff
を使用している場合などはコードを書く時にタイプ・チェック情報が表示されます。(多分)
コマンドラインからタイプ・チェッカーを実行する場合、コマンドは次のとおりです:
$ fl-analyzer ./first.fl
するとこのように表示されます:
Syntax OK
コードを実行する
コードをエラーなしでタイプ・チェック・クリーンにした後、次のようにコードを実行することができます:
$ fluff ./first.fl
出力は次のとおりです:
Welcome to Fluff!
Table of Squares
----------------
-5 25
-4 16
-3 9
-2 4
-1 1
0 0
1 1
2 4
3 9
4 16
5 25
----------------