В Haskell вы можете написать:
x :: (Int,Int) -> Int
x (p,s) = p
В Scala вы должны написать:
def x(a: (Int, Int)) = a._1
или:
def x(a: (Int, Int)) = a match {
case (p, s) => p
}
Почему бы не иметь что-то вроде
def x(_: (p: Int, s: Int)) = p
или
def x(foo: (p @ Int, s @ Int)) = p
?