OK, so here's a short progression of implementations for comparison, for clarity:
{-# LANGUAGE ViewPatterns #-}
import Data.Array.Unboxed
import Data.List (tails, inits)
import qualified Data.List.Ordered as O -- package 'data-ordlist'
(\) = O.minus