An Exploration of the Difficulties of Learning Abstract Data Types and Structural Induction