An idea of a syntactic validator

16:54 (tokuhirom_______) Params::Validateをかけたときに、そのスタックにレキシカル変数としておけたら便利じゃね?という

その後の議論のまとめ。

呼び出し元に変数を定義するのは無理ですが,引数として与えられた変数の名前ならPadWalker::var_name()で得ることができます。また,変数アトリビュートで型を指定するようにもできます。アトリビュートは重ねがけできるので,Optional, Defaultなどもできます。

ということを考えると,ソースフィルタなしでも以下のようなValidation構文が実現できるはず…というアイデアでした。

use SyntacticValidator;

sub foo{
    args my $foo : Int Default(42),
         my $bar : Symbol( yes | no ) Optional;
    # ...
}

foo(foo => 10, bar => 'yes');

なかなか面白そうなので,Mooseのほうにある程度区切りがついたら着手しようと思います。

id:tokuhirom++

参考:http://gist.github.com/173201