# -*- Mode: Python -*- use strict; use warnings; use Test::More 'no_plan'; use Acme::Pythonic debug => 0; # ---------------------------------------------------------------------- sub foo: my $i = 7 return $i is foo, 7 # ---------------------------------------------------------------------- my $coderef = sub: my $n = shift $n *= 3 is $coderef->(3), 9 # ---------------------------------------------------------------------- my $fib $fib = sub: my $n = shift die if $n < 0 $n < 2 ? $n : $fib->($n - 1) + $fib->($n - 2) is $fib->(5), 5 # ---------------------------------------------------------------------- sub count_collatz_steps: my $n = shift my $steps = 0 # do we put a semicolon here? while $n != 1: $steps++ if $n % 2: $n = 3*$n + 1 else: $n /= 2 # there is a variant that removes all even factors $steps is count_collatz_steps(1), 0 is count_collatz_steps(2), 1 is count_collatz_steps(5), 5