puti ::= fn(x: int) {
#C("printf(\"%ld\\n\", x)");
};
putf ::= fn(x: float) {
#C("printf(\"%f\\n\", x)");
};
t ::= fn(a:: Type) Type {a};
f ::= fn(b::=, u::=, a:t(b), x:t(u)) int{
((3 as b) as u) as int
};
main ::= fn() {
x : t(int) = 3;
y : t(float) = 3.4;
f(x,y);
};