An Intro To Functional Programming