I like this question, and I've got something that works, but I'm not sure it's the prefered solution.
function say(arg) {
return function(word) {
alert(arg + " " + word);
};
}
It solves "hello world", but wouldn't work for something like say("dogs")("and")("cats"). Are you expecting an arbitrary number of function returns?