puti @= fn(x: int) { #C("printf(\"%ld\\n\", (long)x); "); }; putch @= fn(x: char) { #C("printf(\"%c\\n\", x); "); }; putf @= fn(x: float) { #C("printf(\"%f\\n\", (double)x); "); }; Foo @= int; main @= fn() { f := fn(x: int) { p := &x; *p = 5; }; // f(3); // x : Foo; };