fix `reduction` for 0- and 1-length sequence cases

Depending on the length of the provided `source`, `reduction` should
return a sequence of:
- for length 0, `fn`’s associated monoidal identity value (e.g.: 0 for
`sum`, 1 for `multiply`)
- for length 1, the single value