build/extracted-examples/guides/hack/15-asynchronous-operations/28-guidelines/lambdas.hack (38 lines of code) (raw):
// WARNING: Contains some auto-generated boilerplate code, see:
// HHVM\UserDocumentation\MarkdownExt\ExtractedCodeBlocks\FilterBase::addBoilerplate
namespace Hack\UserDocumentation\AsyncOps\Guidelines\Examples\Lambdas;
use namespace HH\Lib\Vec;
async function fourth_root(num $n): Awaitable<float> {
return \sqrt(\sqrt((float)$n));
}
async function normal_call(): Awaitable<vec<float>> {
$nums = vec[64, 81];
return await Vec\map_async(
$nums,
fun(
'\Hack\UserDocumentation\AsyncOps\Guidelines\Examples\Lambdas\fourth_root',
),
);
}
async function closure_call(): Awaitable<vec<float>> {
$nums = vec[64, 81];
$froots = async function(num $n): Awaitable<float> {
return \sqrt(\sqrt((float)$n));
};
return await Vec\map_async($nums, $froots);
}
async function lambda_call(): Awaitable<vec<float>> {
$nums = vec[64, 81];
return await Vec\map_async($nums, async $num ==> \sqrt(\sqrt((float)$num)));
}
async function use_lambdas(): Awaitable<void> {
$nc = await normal_call();
$cc = await closure_call();
$lc = await lambda_call();
\var_dump($nc);
\var_dump($cc);
\var_dump($lc);
}
<<__EntryPoint>>
function main(): void {
\init_docs_autoloader();
\HH\Asio\join(use_lambdas());
}