Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: 3ee76ec234
Fetching contributors…

Cannot retrieve contributors at this time

31 lines (20 sloc) 0.923 kb
use Typed::Subroutines;
# create a subtype from Sub
subset TwoArgSub of Sub where typed_sub(Any, Any);
subset TakesIntAndString of Sub where typed_sub(Int, Str);
my TwoArgSub $a;
my TakesIntAndString $b;
$a = sub ($a, $b) { ... }; # lives
$a = sub ($a) { ... }; # dies
$b = sub (Int $a, Str $b) { ... }; # lives
$b = sub (Int $a, $b) { ... }; # dies
# validate subroutines passed to your subroutines (dawg)
sub doStuff(Int $a, Str $b, &operation where typed_sub(Int, Str)}) {
doStuff(99, "bottles of beer", -> Int $a, Str $b { ... }) # lives
doStuff(99, "bottles of beer", -> Rat $a, Num $b { ... }) # dies
Typed::Subroutines let you specify subroutine types verifying the parameter list so you can have better type checking for first-class functions.
I'll write more docs when I'm less tired.
Jump to Line
Something went wrong with that request. Please try again.