Commit | Line | Data |
bb5a920e |
1 | #!/usr/bin/perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
6 | use Test::More tests => 3; |
7 | use Test::Exception; |
8 | |
9 | BEGIN { |
10 | use_ok('Moose::Autobox'); |
11 | } |
12 | |
13 | use Moose::Autobox; |
14 | |
15 | # we need a control in the experiment |
16 | sub fact { |
17 | my $n = shift; |
18 | return 1 if $n < 2; |
19 | return $n * fact($n - 1); |
20 | } |
21 | |
22 | *fact2 = sub { |
23 | my $f = shift; |
24 | sub { |
25 | my $n = shift; |
26 | return 1 if $n < 2; |
27 | return $n * $f->($n - 1); |
28 | } |
29 | }->y; |
30 | |
31 | *fact3 = sub { |
32 | my $f = shift; |
33 | sub { |
34 | my $n = shift; |
35 | return 1 if $n < 2; |
36 | return $n * ($f->($f))->($n - 1); |
37 | } |
38 | }->u; |
39 | |
40 | is(fact(10), fact2(10), '... our factorials match'); |
41 | is(fact(10), fact3()->(10), '... our factorials match'); |
42 | |