map := (fn array | result := (); for array (v | result = result & (| fn v) ); result);
drop := (n arr | arr.(range n (len arr)));
take := (n arr | arr.(up n));
filter := (predicate arr | arr.(map predicate arr));