some code and notes taken whilst working through functional programming for the object orientated programmer