#!/usr/bin/perl
#
# eg4: 3rd coderef example: apply( function, args )
#

use strict;
use warnings;
use Function::Parameters qw(:strict);

fun double_scalar($n)
{
	return $n * 2;
}

fun double_array(@x)
{
	return map { $_ * 2 } @x;
}

fun apply( $coderef, @args )
{
	return $coderef->( @args );
}

my $scalar = apply( \&double_scalar, 10 );
print "scalar: $scalar\n";

my @array = apply( \&double_array, 1, 2, 3 );
my $str = join(',',@array);
print "array: $str\n";
