sub curriable_add { my ($first, $second) = @_; croak "first argument is undefined" if !defined $first; return $first + $second if defined $second; return sub { $first + shift }; }