NamedArray

プログラミング言語をデータとして扱うためには名前付きの配列が必要なんじゃ???
って思い、NamedArrayクラスってのを作ってみました。
これ使えば、配列と連想配列の両方兼ねてるのでいろいろできるはずです。
名前付き配列を扱うことが出来るJSONみたいなのがC式として採用できるといいんではないかと。

return:[
  [print [add, 1,2] ]
],
add:[
 a:int,
 b:int,
 return: [+, a, b]
]

こんなかんじ。
あとは、括弧の省略ができればなぁと。

class NamedArray(T, N) {
	T[N] name;
	int[] array;
	int length(int length) {
		if (array.length > length)
			foreach(N key, int i; name)
				if (i < length)
					name.remove(key);
		return array.length = length;
	}
	int length() {
		return array.length;
	}
	T opIndexAssign(T value, int n) {
		return array[n] = value;
	}
	T opIndexAssign(T value, N n) {
		return array[name[n]] = value;
	}
	int opIndexAssign(N n, int number) {
		return name[n] = number;
	}
	T opIndex(int n) {
		return array[n];
	}
	T opIndex(N n) {
		return array[name[n]];
	}
}

void main() {
	NamedArray!(int, char[]) na = new NamedArray!(int, char[])();
	na.length = 10;
	na[0] = "start";
	na[0] = 1;
	na[1] = 2;
	na[3] = 3;
	na[3] = "end";
	for (int i = 0; i < na.length; i++) {
		printf("%d\n", na[i]);
	}
	printf("%d\n", na["start"]);
	printf("%d\n", na["end"]);
}