Scheme is known for being concise, but (vector-ref v 0) is not as concise as the v[0] syntax in other languages. I just wanted to note that you could make (v 0) work without making vectors be functions. Just extend the Scheme semantics to handle a vector in the operator position. Unfortunately, you can't do exactly that with Scheme macros.