0に関するうだうだ

http://d.hatena.ne.jp/takadeko/20050122
0が偶数でないという考え方は(まっとうな)数学者からは聞いたことがありません。

偶数を定義する時に、2で割って整数となる数とするので0+0=0だから0は偶数だとすると思います。

0が自然数かどうかは確かに分かれています。僕は0は当然自然数派です。
歴史的には0は自然数に含まれなかったのですが、いくつかの理由から0が含まれていたほうが自然だと思えるからです。

まず、数論の立場から。+に関して。どんな数に*1しても値は変わりません。なのに+xして変わらない数がないのは不思議です。

集合論からみても0={}は、自然数の長であって欲しいし、lambda calculation から考えても0は自然数であって欲しい。

C言語の添え字付けを考えてみましょう。int buf[3]; と宣言すると buf[0], buf[1], buf[2] と使えるようになりますね。これは集合論の立場からも非常に自然です。ノイマン流の自然数の定義は0:={}, n:=(n-1)∪{(n-1)}なので、3={0,1,2}となりbuf[3]のなかに0,1,2とあるのは非常に自然ですよね。

五味先生は含めない立場らしいですな。
http://homepage3.nifty.com/gomiken/essay/column/number.htm

でも、正直こんなのは数学でなくて平均律純正律のような(或いは、perl,rubyのような)宗教戦争なので本の著者が頭で宣言したとおりに進めばいいのですよ。似たような類として、体は可換か非可換か(可換体、斜体のどちらが体か)、環は単位元を持つか、などなどがあります。

main(){char*s="main(){char*s=%c%s%c;printf(s,34,s,34);}";printf(s,34,s,34);}はどこで改行しますか、みたいな挨拶代わりでやっているので、これが重要な真理を導くかのように真剣に捉えてはいけないでしょう。

main()
{
    char* s = "main(){char*s=%c%s%c;printf(s,34,s,34);}";
    printf(s, 34, s, 34);
}

とやりたい。