puti ::= fn(x: int) { #C("printf(\"%ld\\n\", (long)x); "); }; putf ::= fn(x: float) { #C("printf(\"%f\\n\", (double)x); "); }; // point ::= pkg "point"; Foo ::= struct { x, y : int; }; f ::= fn(t :: Type) int { 5 as t } ; main ::= fn() { i ::= int; puti(f(i)); };