forall(otype T, ttype Params | { void print(T); void print(Params); }) void print(T arg, Params rest) { print(arg); print(rest); } void print(const char * x) { printf("%s", x); } void print(int x) { printf("%d", x); } int main() { print("x = ", 123, "."); }