impure function pure function modifying global variable increased global variable external file random number generator mutable for recursive sum url slugify in ruby slugify composition slugify composition with comp increment numbers testing increment numbers square function square output memoization memoization 2 double sum double subtraction double operator imperative even number filter even number imperative filter array declarative filter array over age function map people imperative map people in-place update list to absolute update list reduce order amount reduce amount map reduce amount filter map reduce testing shopping cart