Hare Lang Tutorial 3

Hare Lang Tutorial2からの続き... 定数定義にconstとletを使う use fmt; use io; use os; use strings; export fn main() void = { // Example k const source = os::open("main.ha")!; const source = io::drain(source)!; const source = strings::fromutf8(source)!; const source = strings::split(source, "\n"); first3(source); // Example B let i: int= 1337, j: int = 42; fmt::printfln("{} + {} = {}", i, j, i + j)!; j = i; fmt::printfln("{} + {} = {}", i, j, i + j)!; }; fn first3(lines: []str) void = { fmt::println("The first three lines of main.ha are:")!; fmt::println(lines[0])!; fmt::println(lines[1])!; fmt::println(lines[2])!; }; constとletを使った一般的な定数定義を例を示すためのサンプル. ...

March 16, 2025 · 3 min

Hare Lang Tutorial 2

Hare Lang Tutorial1からの続き... 関数とパラメーター(Functions & parameters) function_and_parameter.ha use bufio; use fmt; use os; use strings; export fn main() void = { const user = askname(); greet(user); }; // Ask the user to provide their name. fn askname() str = { fmt::println("Hello! Please enter your name:")!; const name = bufio::read_line(os::stdin)! as []u8; return strings::fromutf8(name)!; }; // Greets a user by name. fn greet (user: str) void = { fmt::printfln("Hello, {}!", user)!; }; プログラムを実行するとHello! Please enter your name:のあとにプロンプトで入力を待ち憂け,入力された値をユーザー名として"Hellor! {ユーザー名}“のように出力する. 関数はプログラムの処理を実行する基本単位で複数のタスクをひとかたまりにして呼べるようにしたもの. 関数は,引数(parameters)のリストを受けとることができ,関数名につづく()にリストが記述される. greetはstr(文字列)型の引数をuserという名前で受けとる.関数は処理の結果を呼び出し元に_返す_ことができる. asknameはstr型の返り値を返す. main関数では返り値を変数の保存してgreet関数に_渡している_. ...

March 3, 2025 · 1 min

Hare Lang Tutorial 1

hare言語について。 公式のTutorial(Genaral language introduction)の実践. はじめに(Getting started) hello_world.ha use fmt; export fn main() void = { fmt::println("Hello world!")!; }; インストールを行ったあと,上記コード(ファイル名hello_world.ha)を作成しhare run hello_world.haを実行する.hare runはコンパイルと実行を一括で実行しているので,コンパイルと実行を分割して行う場合はhare buld -o example hello_world.haとして作成されたexampleプログラムを実行する.出力結果はHello world!. ほりさげる(Breaking down “Hello world”) 最初の行ではimportで標準ライブラリのfmtモジュールを導入する. このモジュールはテキスト整形用で,println関数を提供していて,これでテキストと改行コードを出力する. プログラムの_入口_はmain関数で実行環境がたちあがったらまずこの関数を実行する. この関数の型はHare言語の標準規格で.引数なし(main()),戻り値なし(void)で定義されている. そしてこの関数は"exported"され,Hare言語のランタイムが使えるようにしなければならない. 関数ではfmtモジュールのprintln関数をよんで,“Hello world!“を出力している. エラー処理(Error handling in “Hello world”) 関数の呼出しに続く!演算子はerror assertion operatorといって,標準出力の書き込みに失敗する可能性があるのでここでエラー処理を書かなければならないことを示す.この演算子なしでコンパイルがとおらない(エラーを無視できない). 本来はいけないですが,単にエラーが出ることを許容して実行させるなら,単にこの演算子を使うだけでコンパイルを通すことができる. もしエラーが発生した場合はプログラムはクラッシュする. hare run hello_world.ha > /dev/nullとすればエラーの発生を再現できる. to be continued… An introduction to the Hare programming language

April 25, 2024 · 1 min