The error is not "weird"; it means exactly what it says.
term does not evaluate to a function taking 2 arguments
A "term" is a small portion of an expression, roughly speaking. Here, the term in question is "World.upperBound" or "World.lowerBound".
"Arguments" is another word for "parameters".
To "evaluate to X" means to have a result of X when evaluated. To evaluate a formula is to perform the calculation that the formula indicates.
Thus, the compiler states that selecting the upperBound member of World does not result in a function that takes two parameters. And indeed it doesn't, because the upperBound member of World is not a function that takes two parameters.
The reason it makes this complaint is that the statement "World.upperBound(0, 0)" is saying to call World.upperBound, passing it 0 and 0 as parameters. It can't do this, because World.upperBound is the wrong type.