Skip to content

Instantly share code, notes, and snippets.

@belden
Created August 22, 2012 20:55
Show Gist options
  • Save belden/3429266 to your computer and use it in GitHub Desktop.
Save belden/3429266 to your computer and use it in GitHub Desktop.
y-combinator.pl
#!/usr/bin/env perl
use strict;
use warnings;
sub y_combinator (&) {
my $curried = shift;
return sub {
my $f1 = shift;
return $curried->(sub { $f1->($f1)(@_) });
}->(sub {
my $f2 = shift;
return $curried->(sub { $f2->($f2)(@_) });
});
}
my @numbers = (1,2,3);
y_combinator {
my $recurse = shift;
return sub {
my $number = shift @numbers;
warn "number: $number\n";
return scalar @numbers ? $recurse->() : undef;
};
}->();
@belden
Copy link
Author

belden commented Aug 22, 2012

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment