add functors and monads article