Explain how you may model abstract data types as existential types. What realizations of the type \E %a. { a:%a, f:%a -> Bool } can you think of? Give at least two examples.