Stack
Queue
Deque
Priority Queue
Tree
These data types can be implemented in many different ways
An abstract data type is a type with associated operations,
but whose representation is hidden...
source: wiki.haskell.org
ADT: List
DS: ArrayList, LinkedList...
ADT: Map
DS: HashMap, TreeMap...