ブレースがだめならインデントを使えばいいじゃない

id:ytqwertyさんのところに昨日のをAdaとPascalの場合で書いた場合のが。
で、それを見てたら、AdaとかPascalとかそれ以前に、僕が書いた処理がちょっとヘボいことに気付いて(特にread_2int)、恥ずかしさのあまり穴に入りたくなった次第。しかし、近くに入れそうな穴がなかったので問題無かった。
えーと、あれは、ちょっと複雑に書いたほうが、テーマに沿うかなーとか、そういうことにしといてください。


まあ、そういう下らない話は置いといて、確かに、MLとかLispほどではないけど、AdaとPascalは空行無しで書いてもそれほど見にくいとは感じない。これは、どこが違うんだ…、と思って見てたら、「ひょっとしたら、ブレースが悪いんじゃないか…」と感じてきた。

    hogehoge;
}
nanika;

こーいう形だけで見た場合、ブレースはどっちかっていうと、nanikaのほうにくっついてるように見える。それが気持ち悪いから、無意識のうちに改行入れてしまうんじゃないか、と。いや、断言はできないけど。なんとなく、そんな気がした。


で、「あー、じゃあブレース使わんほうがいいんかなー…ブロックの終わりはどうしたらいいかなー…begin〜endってあんま好きじゃないんだよな…」と、思ってたら、「インデントを使えばいいんだよ」とか、そんな考えが、ふと浮かんで、インデントを使うとしたら、こんな感じ↓

def read_int( fp, last, max ):
	mutable num = 0
in:
	while true:
		c = stdio.getc( fp )
	in:
		if ctype.isdigit(c):
			num = num*10 + (c-'0')
		elseif c == last:
			if num <= max
				return num
			else
				parse_error()
				return 0
		else
			parse_error()

になるかなーって妄想してたら、なんか、僕の求めてる物に非常に近いような気がしてきた。僕はずっとCスタイルが好きだと思ってたのに、全然そんなこと無かったようだ。
もうちょっと詰めて考える必要がありそうだけど、これに、前に考えた色々とか、最近考えた色々とか、そういうのを詰めたら、僕の理想の言語ができるかもしれん。と、思ってちょっと楽しくなってきたけど、言語なんて、妄想してる時が一番楽しいのであって、多分、今がピーク。


まあいいか、気が向いたら実装してみよう。いつになるか知らんが。


あと、Cだとか言う以前に、僕のコードは空行が多過ぎるような気がした。あれはどうなんだろうか。僕は精一杯見易くするつもりでやってるんだが、他にやってる人がいない。