2 // Copyright 2004-present Facebook. All Rights Reserved.
4 function reduce
<Tv
, Ta
>(
5 Traversable
<Tv
> $traversable,
6 (function(Ta
, Tv
): Ta
) $accumulator,
11 function testit(varray
<shape('page_id' => string, 'page_name' => string)> $v):void
{
12 // So: Tv appears in a covariant position in a lambda parameter type
13 // Ta appears in a covariant position in the result
14 // And we have varray<shape(...) <: Traversable<Tv>
15 // So shape(...) <: Tv
16 // Also vec<nothing> <: Ta
18 $pages_document = reduce
<_
,_
>($v, ($pages_document, $res) ==> {
20 $pages_document[] = Map
{
21 "uid" => (string)$res['page_id'],
22 "text" => $res['page_name'],
25 return $pages_document;