=head1 NAME

Method::Signatures - method and function declarations with signatures and no source filter

=head1 VERSION



    package Foo;

    use Method::Signatures;

    method new (%args) {
        return bless {%args}, $self;

    # Can also get type checking if you like:

    method set (Str $key, Int $val) {
        return $self->{$key} = $val;        # now you know $val is always an integer


Provides two new keywords, C<func> and C<method>, so that you can write
subroutines with signatures instead of having to spell out
C<my $self = shift; my($thing) = @_>

C<func> is like C<sub> but takes a signature where the prototype would
normally go.  This takes the place of C<my($foo, $bar) = @_> and does
a whole lot more.

C<method> is like C<func> but specifically for making methods.  It will
automatically provide the invocant as C<$self> (L<by default|/invocant>).
No more C<my $self = shift>.


This module sources are hosted on github 
and uses C<Module::Build> to generate the distribution. It can be 


=item directly

 cpanm git://github.com/evalEmpire/method-signatures.git

=item from CPAN

 cpan Method::Signatures
 cpanm Method::Signatures

=item maualy cloninig the repository:

 git clone https://github.com/evalEmpire/method-signatures.git
 cd method-signatures
 perl Build.PL
 ./Build install 


This distribution requires Perl v5.8.1.

This distribution requires the following modules:

=over 4

=item * L<Any::Moose> (version 0.11)

=item * L<Const::Fast> (version 0.006)

=item * L<Devel::Declare> (version 0.006002)

=item * L<Devel::Declare::MethodInstaller::Simple> (version 0.006002)

=item * L<Lexical::SealRequireHints> (version 0.008)

=item * L<Module::Build> (version 0.26)

=item * L<Mouse> (version 0.64)

=item * L<PPI> (version 1.203)

=item * L<Sub::Name> (version 0.03)

=item * L<Test::Exception> (version 0.29)

=item * L<Test::Warn> (version 0.10)


This distribution recommends the following modules:

=over 4

=item * L<Data::Alias> (version 1.08)

=item * L<Moose> (version 0.96)