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