User:Coderjoe/Sandbox2: Difference between revisions

no edit summary
No edit summary
No edit summary
Line 1:
<lang oz>declare
=={{header|Perl}}==
<lang perl>use Math::Complex ':trig';
 
fun {Compose F G}
sub compose {
my ($f,fun {$g) = @_;X}
{F {G X}}
sub {end
end
$f -> ($g -> (@_));
};
}
 
my $cube = subfun {Cube $_[0]X} X*X*X (3) };end
my $croot = sub { $_[0] ** (1/3) };
 
fun {CubeRoot X} {Number.pow X 1.0/3.0} end
my @flist1 = ( \&Math::Complex::sin, \&Math::Complex::cos, $cube );
my @flist2 = ( \&asin, \&acos, $croot );
 
in
print join "\n", map {
compose($flist1[$_], $flist2[$_]) -> (0.5)
} 0..2;</lang>
 
for
=={{header|Perl 6}}==
F in [Float.sin Float.cos Cube]
{{works with|Rakudo|2011.06}}
I in [Float.asin Float.acos CubeRoot]
 
do
<lang perl6>sub compose (&g, &f) { return { g f $^x } }
{Show {{Compose I F} 0.5}}
 
end
my $x = *.sin;
} 0..2;</lang>
my $xi = *.asin;
my $y = *.cos;
my $yi = *.acos;
my $z = * ** 3;
my $zi = * ** (1/3);
my @functions = $x, $y, $z;
my @inverses = $xi, $yi, $zi;
for @functions Z @inverses { say compose($^g, $^f)(.5) }</lang>
Output:
<pre>0.5
0.5
0.5</pre>
Anonymous user