たるこさん

「最初の要素の反復のとき」、「最後の要素の反復のとき」に特別な処理をしたい、というのがよくあると思うんです。

最初/最後かわかる擬似変数を参照できるか、iter ブロック内で if みたいに書けるといい。と思う。

iter1 {
	if (first_of_iter) {
		"jemmy".p;
	} else {
		"alex".p;
	}
}

iter2 {
	"iter block top".p;

	first { "jemmy".p; } else { "alex".p; }
	//はじめの時は jemmy それ以外は alex と出力
	//またブロックの途中でもOK

	"iter block bottom".p;
}

iter3 {
	first { "jemmy" } else { "alex" } .p;
	//値を返せると便利な気もするけれど、キモイかも(if も返さないし)。
}

本体ブロックの後ろに付けるのは、"first" でも後ろに書かないといけないわけでなんとなくいやだなぁ。
また、後ろにつける方式だと、イテレータブロック内の(はじめ|おわり)の固定位置にしか処理をいれられなくて不便な気がする。