Maybe I'm misunderstanding what you're saying, but how on Earth would a function
f :: (a -> b -> c) -> b -> a -> c
result in f (+) 1 2
evaluating to "cookie"
? For one, the types (obviously, to me at least) don't work out.