I _think_ every erlang term has an implicit ordering associated with it, so this looks like the minimal spec for this function. You could rewrite it to:

    -spec uniq(list()) -> list().

as we can't assert that list Input and list Output are of the same internal element type.