A pure function:
Has no side effects
Return value depends only on arguments
Example:
sub factorial { my $n = shift; $n == 0 ? 1 : $n * factorial($n-1); }