0x90

一回休み

Bosque言語でHello world

一年以上ぶりに書いたブログがこんな一発ものでアレですが、今話題?のBosque言語でHello, worldしてみた話。

インストール

公式に従う。Windowsで、って書いてあるけどWSL上でも動いたので別にnode.jsさえ動けば大丈夫そう。

Hello, world

とにかくリファレンスが全くそろっていないので、手探りでやる羽目になる。サンプルプログラムが二つ、ここにあるが、どちらも標準出力を使っていない。レポジトリをstdoutとかで適当に検索すると、ビルトイン関数のTS実装が出てきて、これを手掛かりに検索するとライブラリのヘッダ実装が出てくる。すると、Anyなtype(正確にはconcept。これはC++conceptと同じで、型クラスのようなものなのだと思う。Rustでいうトレイト。Any境界はあらゆる型=entityが実装することになっている)がdisplayというメソッドを持っていることがわかる。

そこで

namespace NSMain;

entrypoint function main(): Int {
    var _ = "Hello, world!"->display();
    return 0;
}

とかやってみると、

BosqueLanguage/ref_impl$ node bin/test/app_runner.js ../../bosque_helloworld/hello.bsq
Reading app code...
Executing app code...
"Hello, world!
"Done with -- 0

と、確かに表示された。ただまあこのdisplay関数、displayというかdebug用途っぽい。 あと

var _ = "Hello, world!"->display();

でもわかるように、束縛なしのメソッド呼び出しは今のところないみたい。(displayは自分自身を返すよう) あとUnit型みたいなのもなさそうなのでmainIntを返すようにした。

ソースはここ。とはいえ今のとこ上の一ファイルだけですが…。

結論

リファレンスなしで読み解くの楽しいです^^