関数プログラミング的に、比較演算子を引数で受け取るようにすると少しましかも。

def sorted[T](xs:List[T], f:(T,T)=>Int) : Boolean =
 xs match { case x::y::zs => f(x, y) >= 0 && sorted(y::zs); case _ => true }