my introduction into functional programming