コンテンツにスキップ

型

Ceruneは静的型付け言語です。型はソースコードの検査時に決定され、暗黙の数値型変換は行いません。

分類 型 主な操作・規則
符号付き整数 i8、i16、i32、i64 算術、比較、ビット演算。範囲外の演算は停止
符号なし整数 u8、u16、u32、u64 非負整数。範囲外の演算は停止
浮動小数点 f32、f64 型の精度で丸める浮動小数点演算
真偽値 bool true、false、論理演算、比較
文字列 string 不変のUTF-8文字列。表示、等値比較、連結

stringはconcatで連結し、byte_lenでUTF-8のバイト数を取得できます。文字数の取得や添字参照は未実装です。

分類 表記 主な操作・規則
固定長配列 [T; N] 長さが型の一部。要素参照・反復・値コピー
動的配列 [T] 実行時の長さ。明示コピー・範囲コピー・反復
名前付き積型 type 名前付きフィールド、既定値、値全体の更新
直和型 enum 選択肢と付随する値。matchによる分岐

array_lenは固定長・動的配列の要素数をi64で返します。配列のコピー後の変更は元の配列へ影響しません。

現在の制限: 動的配列への要素追加・伸長、借用スライスは未実装です。名前付き積型のフィールドは直接代入できず、新しい値を作って束縛全体を再代入します。汎用Option/Result型も未実装です。

固定長・動的配列の操作については配列を参照してください。

count: i64 = 40;のように束縛へ型を書きます。count: infer = 40;のようなinferは、宣言時の型推論を指定する構文であり、実行時に型が変わる型ではありません。

数値型どうしは暗黙には変換されません。T(value)やconvert<T>(value)による値を保持する変換を明示できます。値を正確に保持できない変換は停止します。丸めや飽和を伴う変換には別の明示的な操作があります。

整数演算はオーバーフローを暗黙に折り返しません。範囲外の結果や0による整数除算は実行時に停止します。浮動小数点演算はf32とf64で精度が異なります。

関数が結果を返さない場合は、戻り値にvoidを指定できます。

以下の実行可能なコードはすべてCerune本体で管理されています。

このページは仕様を要約した二次資料です。型の値域、変換条件、評価順、停止条件の定義は次を参照してください。