CREATE OR REPLACE MACRO firsts(l) as (
WITH
t as (SELECT unnest(l) as x, generate_subscripts(l, 1) as index),
s as (SELECT x, min(index) as index FROM t GROUP BY x)
SELECT list(x ORDER BY index)
FROM s ) ;