Professor Frisby's Mostly Adequate Guide to Functional Programming