We are creating this function every frame, right?  Just with a different closed-over `position`.

I don't know how the compiler works but I suspect this will be slow.  @shunter?

We have lots of options here; for example, changing the compare function to take `(a, b, userDefinedObject)`.