Acme-Pythonic
view release on metacpan or search on metacpan
# -*- Mode: Python -*-
# These are Pythonic ports of programs from MJD's HOP.
# Acme::Pythonic needs to know this prototype.
sub Iterator(&);
use Test::More 'no_plan';
use Acme::Pythonic debug => 0;
use strict
use warnings
my ($it, $computed, $expected)
my $n = 2
while defined(my $val = $it->()):
is $val, $n++
is $n, 6
# Defined on page 122
sub NEXTVAL:
$_[0]->()
# Defined on page 123
sub Iterator(&):
return $_[0]
# Defined on page 160
sub imap(&$):
my ($transform, $it) = @_
return Iterator:
local $_ = NEXTVAL($it)
return unless defined $_
return $transform->()
$it = imap:
$_ *= 2
$_ += 1
$_
upto(2, 5)
$expected = [5, 7, 9, 11]
$computed = []
while my $val = NEXTVAL($it):
push @$computed, $val
is_deeply $expected, $computed
# Defined on page 160
sub igrep(&$):
my ($is_interesting, $it) = @_
return Iterator:
local $_
while defined($_ = NEXTVAL($it)):
return $_ if $is_interesting->()
return
$it = igrep:
$_ % 2
upto(2, 11)
( run in 0.912 second using v1.01-cache-2.11-cpan-49f99fa48dc )