def nub(iterable):
    """
    nub :: [a] -> [a] 
    O(n^2). The nub function removes duplicate elements from a list. In particular, it keeps only the first occurrence of each element. (The name nub means `essence'.) It is a special case of nubBy, which allows the programmer to supply their own equality test.
    """
    rs = []
    for x in iterable:
        if not x in rs:
            rs.append(x)
    return rs
