Parameters in the ZFC axioms I am beginning to learn axiomatic set theory from Krysztof Cieselski's Set Theory for the Working Mathematician. In laying out the axiom schemata of comprehension and replacement, Cieselski makes use of parameters. For example, the axiom of comprehension is:
For every formula $\phi(s,t)$ with free variables $s$ and $t$, for every $x$, and for every parameter $p$ there exists a set $y = \{u \in x \colon \phi(u,p) \}$ that contains all those $u \in X$ that have the property $\phi$:
$$\forall x \forall p \exists y [\forall u (u \in y \leftrightarrow (u \in x \& \phi(u,p)))].$$ 
I'm trying to understand the function of the parameter $p$ here. Halmos' book simply has:
To every set $A$ and to every condition $S(x)$ there corresponds a set $B$ whose elements are exactly those elements $x$ of $A$ for which $S(x)$ holds.
The parameter $p$ could be absorbed into $\phi$ to create a new property $\phi_p(x) = \phi(x,p)$, so it is not strictly necessary. My guess is that the parameter is used to keep the schema countable, as there are countably many formulas with free variables, but there are potentially uncountably many parameters $p$. Is this accurate? Or is there something more subtle going on?
 A: There is indeed something more subtle going on: there might be sets in the universe (that is, things we could use as parameters) which aren't definable! Indeed, if you think about it for a bit, there should be - there are only countably many definitions, but uncountably many sets. (Interestingly this argument doesn't hold as much water as it really should, but I'd argue that it's still "morally" true; however, my ethics have been questioned before.)
So we can't write an axiom for each parameter, because (probably) "most" parameters aren't definable, so we'd miss them. Instead, we write a single axiom saying $$\mbox{For every parameter $p$, [stuff happens]},$$ and this covers our bases without having to name every $p$ specifically.
A: We might try to define set intersection of two sets $a$ and $b$ like this:
$$\tag1a\cap b:=\{\,u\in a:u\in b\,\}.$$
As long as $b$ is a very "explicit" set, we might be able to replace $u\in b$ with a simple predicate  $\phi(u)$. But we do not wan that restriction; instead of defining the intersection only for the case when the second set is what I just called explicit, we want to be able to talk about intersection of arbitrary sets.
A: There are a couple of points to be made here:


*

*Note that your formula $\phi_{p}$ is not in the language of set theory $L_{\in} = \{ \in \}$, but instead makes use of a constant symbol $p$. Since we want to allow any parameters $p$ in our schemes, this approach would require us to define a constant symbol $c_p$ for every possible parameter $p$, which leads to some sort of 'chicken or the egg'-dilemma. See the comments below.

*Let $\operatorname{ZFC}^0$ be the version of $\operatorname{ZFC}$ where we don't allow parameters. It turns out that $\operatorname{ZFC}$ and $\operatorname{ZFC}^0$ are in fact equivalent. So we don't actually need any parameters. See here.

*Using paramaters is a very natural thing to do - especially for mathematicians outside of set theory ($\dagger$): Let, for example, $f \colon \mathbb R \to \mathbb R$ be a smooth function. When we define its derivative $f' \colon \mathbb R \to \mathbb R$, we naturally take $f$ (and $\mathbb R$) as a parameter. This applies for all kinds of mathematical arguments.

*...


($\dagger$): Let me clarify. Set theorists use parameters as much as any other mathematician. What I meant to say is that a set theorist is more likely to know about item 2. and thus know that she could, if she wanted to, avoid using parameters. (She still wouldn't, though.)
