自然数に0を加える方が便利な理由

隣の人(id:rf0444)と話してたらまとまったので。


0を含む自然数の集合 N_0と0を含まない自然数の集合 N_1を比較すると、

  •  (N_1, +)半群*1であり、Monoid*2ではない。
  •  (N_0, +)半群であり、Monoid*3である。


なんで、0を含めると自然数をより広いインタフェースで考えられるようになる。
あと、プログラマの場合は、リストやモナドと同じ枠組みで考えられるようになるのも大きい。
……モナド分かってないけど、確かに対応していることは分かったので次はそれだな。

*1:交換則が成立する。すなわち、集合の任意の要素a,b,cに対して(a+b)+c=a+(b+c)

*2:半群であり、なおかつ単位元を持つ。すなわち、集合の全ての要素aに対して、e+a = a+e = aとなるeが存在する

*3:e = 0が唯一の解となる