仲間はずれの判定、ふたたび

30分プログラム、その684。昔にやった仲間はずれの判定を、もう一度やってみました。
問題はhttp://ja.doukaku.org/53/を参考に、前回の回答は仲間外れの判別 - みずぴー日記を見てください。

使い方

*Main> classify [1,1,1,1,1]
Same 1
*Main> classify [1,2,1,1,1]
OnlyOne 1 2
*Main> classify [1,2,1,1,1,3]
Other

ソースコード

import Data.List

data Result a = Same a | OnlyOne a a | Other deriving Show

classify :: (Eq a, Ord a) => [a] -> Result a

classify xs =
    case group $ sort xs of
      [] ->
          error "empty"
      [xs] ->
          Same (head xs)
      [xs,[y]] ->
          OnlyOne (head xs) y
      [[x],ys] ->
          OnlyOne (head ys) x
      _ ->
          Other