map := [fn array | var 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)];