言語仕様がちょっと無駄に複雑になる気もしますが・・・