namespace と method 呼び出し
enum constructor、trait method、module alias は :: で呼び出します。どの名前空間の関数を使っているかを明示できます。
TESTstdionormalize_newlines
#entry main
#indent 4
#target std
#import "core/option" as *
#import "core/result" as *
#import "std/test" as *
#import "core/math" as *
trait SizeCode:
fn size_code %fn Self i32 \x:
0
impl SizeCode for i32:
fn size_code %fn i32 i32 \x:
if lt x 10 then 1 else 2
fn option_code %fn Option i32 i32 \value:
match value:
Option::Some inner:
SizeCode::size_code inner
Option::None:
0
fn main %impure fn void i32 \void:
let small %Option i32 Option::Some 3
let large %Option i32 Option::Some 30
let empty %Option i32 Option::None
let checks:
checks_new
|> checks_push assert_eq_i32 1 option_code small
|> checks_push assert_eq_i32 2 option_code large
|> checks_push assert_eq_i32 0 option_code empty
let shown checks_print_report checks
checks_exit_code shownOption::Some のように constructor 名だけで書き、型推論が曖昧なときは周囲の %Option i32 のような型注釈で具体型を補います。