char :: u8; short :: i16; int :: i32; long :: i64; float :: f32; double :: f64; main :: () -> void { f := foo(); f(3); }; foo :: ()->((u64)->void){ f :: (a:u64)->void{ print_u64 a; }; return f; };