Prove that $|A^{B×C}| = |(A^B)^C|$ I'm having trouble proving that $|A^{B×C}| = |(A^B)^C|$   , where  $M^N$ is the set of all the functions $f:N \to M$. 
My thoughts: to prove this, I need to find a bijection between $|A^{B×C}|$ and $|(A^B)^C|$, so I need a bijection between the set of all functions $g:B×C \to A$ and the set of all functions $h: C \to A^B$. 
 A: The bijection actually should be between the set of all functions $g:B\times C \rightarrow A$ and the set of all functions $h:C\rightarrow A^B$ (otherwise you'd be proving that $|A^{B\times C}|=|A^C|$, which is false in general).

Added after the asker's edit:
In the wikipedia article of currying linked by Clive Newstead, there is a mention of the important and quite general phenomenon of "adjointness". Let's change the notation a little bit: Put $\hom(B,A)=A^B$. Then we are looking for bijections 
$\hom(B\times C,A)\cong\hom(C\times B,A)\cong \hom(C,\hom(B,A))$.
This is quite helpful when trying to remember how does the explicit bijection comes around: for a function $f:C\times B\rightarrow A$, fixing a coordinate $c_0\in C$ will yield a function $f(c_0,-):B\rightarrow A$, so $f$ can be seen as a function such that, when evaluated in a point $c_0$, yields a function from $B$ to $A$ (this of course is not a proof, rather a hint).
A: First, an element of $A^{B\times C}$ is a function $f:B\times C \to A$ and we want to map this to a function $g: C \to A^B$ (which is a function which outputs functions).  
So we need a map $h:A^{B \times C} \to (A^B)^C$ that inputs functions $f: B\times C \to A$ and whose output is a function $h(f): C \to A^B$.  This means, we need to define the output function $h(f)$.  The easiest way to do this, is to define $h(f)$ pointwise, but let's double check exactly what that means.  The function $h(f)$ has domain $C$ and codomain $A^B$.  This means if I take some $c \in C$ and plug it into $h(f)$ (i.e. we are looking at $h(f)(c)$) the output is some function $k: B \to A$. So for each $c \in C$, $h(f)(c)$ is a function which inputs $b \in B$ and outputs some $a \in A$.  In the end, to completely define $h(f)$ I need to say how it will input any $c \in C$ and $b \in B$.  
But this will end up working nicely, because for $f \in A^{B \times C}$ I know what $f$ does to the ordered pair $(b,c)$.  So we let $h:A^{B \times C} \to (A^B)^C$ be defined pointwise as
$$h(f)(c)(b) = f(b,c) \quad\text{ make sure you understand what this is doing!}$$
Now we must check that this $h$ is a bijection.
To see this is one-to-one suppose $f_1, f_2 \in A^{B\times C}$ were such that $h(f_1) = h(f_2)$.  This means that $h(f_1)(c)(b) = h(f_2)(c)(b)$ for all $b \in B$, $c \in C$.  But the definition of $h$ tells us then that
$$ f_1(b,c) = h(f_1)(c)(b) = h(f_2)(c)(b) = f_2(b,c)$$
and so $f_1 = f_2$ and thus, $h$ is one-to-one.
Do you want to try and show that $h$ is onto?  
