What is the tangent vector a function of? I'm reading R. Wald's General Relativity. It defines a tangent vector $v$ as a function, whose domain is the collection of $C^{\infty}$ functions from a manifold $M$ to $R$, and whose range is the real numbers. It's written as $v:F\rightarrow R$. $F$ is the set of functions $f: M\rightarrow R$.
So it seems like $v$ is a function which takes a real-valued function $f$ as input, and gives a real number output.
I really feel like $v$ should be a function of the manifold points $p$. It should take a different real number value at each $p$. Maybe it should have two arguments : $v(f,p)$, where $f$ is a real valued function. However, the book just writes it as $v(f)$, and also defines it as $v:F\rightarrow R$. Does it make sense to assign a single real number to a function?  Or does it make more sense to define it as $v(f,p)$ instead of just $v(f)$?
 A: There is a wide variety of definitions for tangent vectors, and the point of calling them all by this name is that they are all (on a nice enough manifold) equivalent.
There are three big definitions to keep in mind for most of general relativity, which are sometimes called the geometric, kinematic and operational tangent vectors. The terms may differ, and there are other, less pleasant definitions, but those are the ones commonly used in general relativity texts.
The geometric tangent space is the most commonly used one. At every point $p$ of a manifold $M$, you have a copy of $\mathbb{R}^n$. We call this copy at $p$ by $T_pM$, the tangent space at $p$. A tangent vector is simply a point in $T_pM$. The tangent bundle $TM$ is what we get by attaching such a space to every point of the manifold, and to make it into a proper fiber bundle, we give it an appropriate manifold topology. A vector field is then simply a function mapping points of the manifold to points in the tangent space of that point.
The kinematic tangent bundle is the one you get by considering tangent vectors as the velocities of curves. It is a much more concrete idea, as if you have a coordinate system, the tangent vector is just the usual definition of a tangent vector. For a curve with coordinates $x^\mu(t)$, the tangent vector is simply
$$v^\mu = \dot{x}^\mu(t)$$
or, more properly, if you have a curve $\gamma$ in a neighbourhood $U$ with coordinate map $\phi$, the components of the vector in that coordinate system at the point of the curve $p = \gamma(u)$ is
$$v_{\gamma, U, \phi, u} = \frac{d}{dt}(\phi_U \circ \gamma(t))|_{t = u}$$
Up to some equivalence class you can define the tangent space and then the tangent bundle from this. While a simpler notion than others perhaps, on the other hand defining vector fields from this is more difficult. You can do it locally by considering foliations of some neighbourhood by curves, but it is not the simplest object to wield for this.
The operational tangent space is the one defined using derivatives, and the flat space equivalent is that if you have a vector field $V$, you can define a directional derivative from it. It can be difficult to keep your notation straight in such a case, because you have on one hand the vector as a map of smooth functions, and the vector as a map from the manifold to vectors (vectors in this interpretations are germs of derivatives). I try to keep track of it by using square brackets for the first :
\begin{eqnarray}
V : C^\infty(M) &\to& C^\infty(M)\\
\phi &\mapsto& V[\phi]
\end{eqnarray}
and parenthesis for the second :
\begin{eqnarray}
V : M &\to& TM\\
p &\mapsto& V(p) \in T_pM
\end{eqnarray}
The connection between the two in a bit of a more informal way is that, given a scalar function $\phi$, its directional derivative with $V$ is
$$V[\phi] = \sum_i V^i (\partial_i \phi)$$
in which case $V^i$ is the components of your vector in the sense of the geometric tangent space.
It can be shown that if your manifold is reasonable enough, those three definitions are indeed the same (you can find such proofs in say, Lee's introduction to smooth manifolds)
A: I haven't read Wald but here is what is going on. Functions on the spacetime manifold $M$ are denoted
$$
f \in C^\infty(M).
$$
A tangent vector field $v$ is a map
$$
v : C^\infty(M) \to C^\infty(M)
$$
which satisfies a few special properties. Off the top of my head, I think they are basically just
\begin{align}
v(f + g) &= v(f) + v(g) \\
v(fg) &= f v(g) + g v(f).
\end{align}
These two properties are enough to show that $v$ must be a directional derivative. If we have local coordinates $x^\mu$, then $v$ must be expressible as
$$
v = v^\mu \frac{\partial}{\partial x^\mu}.
$$
If you don't see why this is, just consider that any function $f$ can locally be Taylor expanded into a sum of polynomials of the coordinate functions like
$$f = x^1 + (x^2 x^3)^2 + (x^0)^2 (x^1)^3 (x^2)^4 + \ldots$$
If you use the first property to evaluate it on each term, and the second property to evaluate $v(x^\mu)$ on each monomial, you have essentially just recreated the product rule of differentiation. Defining
$$
v^\mu = v(x^\mu)
$$
you can see that $v = v^\mu \partial_\mu$. Therefore, tangent vector fields are really just directional derivatives.
Now, why did Wald say that tangent vectors (not vector fields) are maps from $C^\infty(M)$ to $\mathbb{R}$? Well, it just has to do with restricting the directional derivative to a point. Say you have a point $p \in M$. If you evaluate the vector field $v$ at a single point as $v_p$, then $v_p$ is a map
$$
v_p : C^\infty(M) \to \mathbb{R}
$$
such that
$$
v_p(f) = v(f) \rvert_p.
$$
One might wonder what the point of all of this is. The answer is that this is a pretty economical way of defining tangent vector fields and tangent vectors in a coordinate invariant way. If you have a manifold $M$, what are coordinate invariant objects that ``live'' on $M$? Well, functions $f : M \to \mathbb{R}$ make no reference to a coordinate system. Therefore, maps from functions to other functions can also be defined with no explicit reference to coordinates. This is why we define vector fields as maps from functions to differentiated functions. The function $f$ itself isn't really that important-- it should be thought of as a dummy input which just lets us define $v$ properly.
