2nd assignment. Purely functional sets