Я хочу написать функцию, которая работает с любым типом Scala с полным упорядочением (т.е. я могу использовать '<' на нем). Какой синтаксис для этого? Лучшее, что я придумал, это
def lessThan[T <: Ordered[T]](x: T, Y: T) = x < y
Это не работает, хотя, когда я пытаюсь использовать его из REPL:
scala> lessThan(1, 2)
<console>:8: error: inferred type arguments [Int] do not conform to method lessThan type parameter bounds [T <: Ordered[T]]
lessThan(1, 2)
^
scala> import runtime._
import runtime._
scala> lessThan(new RichInt(1), new RichInt(2))
<console>:8: error: inferred type arguments [scala.runtime.RichInt] do not conform to method lessThan type parameter bounds [T <: Ordered[T]]
lessThan(new RichInt(1), new RichInt(2))
По сути, я считаю, что мне нужен эквивалент этого кода Haskell:
lessThan :: (Ord a) => a -> a -> Bool
lessThan x y = x < y
Я использую Scala 2.7.3 в системе Debian.
Что мне не хватает, и где?