reduceFn fn acc elems = impl acc elems
  where impl acc (n:ns) = impl (fn acc n) ns
        impl acc []     = acc
reduceFn fn acc elems = impl acc elems
  where impl acc (n:ns) = impl (fn acc n) ns
        impl acc []     = acc
reduceFn fn acc elems = impl acc elems
  where impl acc (n:ns) = impl (fn acc n) ns
        impl acc []     = acc