/* stdc ::= "msvcrt.dll"; printf ::= #foreign("printf",stdc) fn (#C &"char const", #C ..) #C int; puti ::= fn(i: i32) i32 { fmt := "number: %d\n\0"; printf(&fmt[0], i) as i32 } // BUG: puti(puti(x)) //sqrt ::= #foreign("sqrt",stdc) fn(f64) f64; sqrtf ::= #foreign("sinf",stdc) fn(f32) f32; /* putf ::= fn(f: f64) i32 { fmt := "number: %f\n\0"; printf(&fmt[0], f) as i32 } */ main ::= fn() { sqrtf(3.1); } main(); */ foo ::= #foreign("foo","test.dll") fn(f32) f32; printf ::= #foreign("printf", "msvcrt.dll") fn(#C &"const char", #C ..) #C int; main ::= fn() { x ::= foo(2.7); }