Assignment 1 (Functional Programming)