/* postgres can not */
/* syntax version 1 */
$l1 = AsList(1,2,3,1,2,3);
$l2 = Just($l1);
$l3 = Nothing(TypeOf($l2));
select $l1, $l2, $l3;

$p = ($x) -> { return $x < 3 };
select ListFilter($l1, $p), ListFilter($l2, $p), ListFilter($l3, $p);

$m = ($x) -> { return $x * 2 };
select ListMap($l1, $m), ListMap($l2, $m), ListMap($l3, $m);

$f = ($x) -> { return AsList($x, $x * 2) };
select ListFlatMap($l1, $f), ListFlatMap($l2, $f), ListFlatMap($l3, $f);

select ListSkipWhile($l1, $p), ListSkipWhile($l2, $p), ListSkipWhile($l3, $p);
select ListTakeWhile($l1, $p), ListTakeWhile($l2, $p), ListTakeWhile($l3, $p);

select ListExtend($l1, $l1), ListExtend($l2, $l2), ListExtend($l2, $l3), ListExtend($l3, $l3);

$ls1 = AsList(AsStruct(1 as a), AsStruct(2 as a));
$ls2 = Just($ls1);
$ls3 = Nothing(TypeOf($ls2));

select ListUnionAll($ls1, $ls1), ListUnionAll($ls2, $ls2), ListUnionAll($ls2, $ls3), ListUnionAll($ls3, $ls3);