String<Ruby> とか String<SQL> とか

以前も書いたし,あっちとかこっちとかでコメントにも書いているけど,文字列に言語情報をもたせて,静的にチェックする仕組みはないのかな.String<Ruby> なら,Rubyのプログラムとして正しいプログラムしか格納できないとか.

「マクロ定義で言語仕様を拡張する」という論文は見つかるし,Scheme にも搭載されているけど,マクロはそれ自身が母艦(?)のプログラムによって実行されることを期待している.そうではなくて,
「実行するかどうかわからんけど,なんかのデータを決められた言語にのっとり,文字列で記述して,文法やら型やらを実行前にチェックする」
仕組みがほしい.

 String title=params.title;
 String query="select * from product where title='%#{title}%'";

String 型の文字列には,'は来てはいけない.ただし\' ならOK ... とかいう決まりがあれば,SQLインジェクションも起きないだろうし.型の定義が大変そうだけど.

こういう論文があるかどうかを探すためのキーワードって何だろう...「Typing Strings by language」とか?