Learning Functional Data Structures and Algorithms. (2017)