型
Ceruneは静的型付け言語です。型はソースコードの検査時に決定され、暗黙の数値型変換は行いません。
| 分類 | 型 | 主な操作・規則 |
|---|---|---|
| 符号付き整数 | i8、i16、i32、i64 |
算術、比較、ビット演算。範囲外の演算は停止 |
| 符号なし整数 | u8、u16、u32、u64 |
非負整数。範囲外の演算は停止 |
| 浮動小数点 | f32、f64 |
型の精度で丸める浮動小数点演算 |
| 真偽値 | bool |
true、false、論理演算、比較 |
| 文字列 | string |
不変のUTF-8文字列。表示、等値比較、連結 |
stringはconcatで連結し、byte_lenでUTF-8のバイト数を取得できます。文字数の取得や添字参照は未実装です。
配列とユーザー定義型
Section titled “配列とユーザー定義型”| 分類 | 表記 | 主な操作・規則 |
|---|---|---|
| 固定長配列 | [T; N] |
長さが型の一部。要素参照・反復・値コピー |
| 動的配列 | [T] |
実行時の長さ。明示コピー・範囲コピー・反復 |
| 名前付き積型 | type |
名前付きフィールド、既定値、値全体の更新 |
| 直和型 | enum |
選択肢と付随する値。matchによる分岐 |
array_lenは固定長・動的配列の要素数をi64で返します。配列のコピー後の変更は元の配列へ影響しません。
現在の制限: 動的配列への要素追加・伸長、借用スライスは未実装です。名前付き積型のフィールドは直接代入できず、新しい値を作って束縛全体を再代入します。汎用Option/Result型も未実装です。
固定長・動的配列の操作については配列を参照してください。
型注釈と数値変換
Section titled “型注釈と数値変換”count: i64 = 40;のように束縛へ型を書きます。count: infer = 40;のようなinferは、宣言時の型推論を指定する構文であり、実行時に型が変わる型ではありません。
数値型どうしは暗黙には変換されません。T(value)やconvert<T>(value)による値を保持する変換を明示できます。値を正確に保持できない変換は停止します。丸めや飽和を伴う変換には別の明示的な操作があります。
整数演算はオーバーフローを暗黙に折り返しません。範囲外の結果や0による整数除算は実行時に停止します。浮動小数点演算はf32とf64で精度が異なります。
関数が結果を返さない場合は、戻り値にvoidを指定できます。
以下の実行可能なコードはすべてCerune本体で管理されています。
- hello.ceru — 整数の束縛と加算
- floating_point.ceru —
f32とf64 - string_byte_length.ceru — 文字列のバイト数
- array_iteration.ceru — 固定長配列の反復
- product-point.ceru — 名前付き積型
- sum_lookup.ceru —
enumとmatch
このページは仕様を要約した二次資料です。型の値域、変換条件、評価順、停止条件の定義は次を参照してください。