functional programming (site course: http://oxij.org/activity/itmo/fp/2012/)