ゼロのゼロ乗は?

aのゼロ乗は1。

    \begin{eqnarray*} a^{0} &=& a^{3-3} \\ &=& a^{3}\times a^{-3} \\ &=& a\times a\times a\times \frac{1}{a\times a\times a} \\ &=& \frac{a\times a\times a}{a\times a\times a} \\ &=& 1 \end{eqnarray*}

これは納得だけど、a = 0の時は?
途中式に”ゼロ除算”がでてきちゃう。これは未定義で良いのだろう。Hashkellで試すと

ghci>0^0
ghci>1

rubyなら、

irb(main)> 0**0
=> 1
irb(main)>

だった。プログラミング言語ではこれを不定とすると都合が悪いのだろう。それとも、

    \begin{eqnarray*} a^{3} &=& 1\times a\times a\times a \\ a^{2} &=& 1\times a\times a \\ a^{1} &=& 1\times a \\ a^{0} &=& 1 \end{eqnarray*}

を採用するのだろうか?これなら、a=0の時0乗もまた1である。しかし、それだとa^{m}においてm>0の時すべてがゼロである。悩ましい。haskellもrubyもm=0の時は1、m>0の時は0であるから、この方式を採用しているのだろう。