随着学习的意图和进一步的这个问题 ,我一直对一个algorithm检查一个列表(或集合)是否是有序的algorithm的显式recursion的惯用替代好奇。 (我通过使用运算符来比较和Int作为types来保持简单;我想在深入研究它的generics之前先看看这个algorithm) 基本的recursion版本是(by @Luigi Plinge): def isOrdered(l:List[Int]): Boolean = l match { case Nil => true case x :: Nil => true case x :: xs => x <= xs.head && isOrdered(xs) } performance不佳的地道方式是: def isOrdered(l: List[Int]) = l == l.sorted 使用fold的另一种algorithm: def isOrdered(l: List[Int]) = l.foldLeft((true, None:Option[Int]))((x,y) => (x._1 && x._2.map(_ <= y).getOrElse(true), […]