btw, Looks like a common pattern raise an error when using reduce with empty lists (Scala, F#, Haskell raise error)