If we define a join function and then use for-join loop, the compiler builtin for-join loop will be used instead of the user defined join function.
We should either disallow redefining compiler builtin functions such as join, or choose the redefined function in such a case.
This is related to #217