Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Scala: function/method application and tuples

I stumbled across a pretty interesting behavior in Scala.

scala> def foo(t: (Int, Int, Int)): Int = t._1 
foo: (t: (Int, Int, Int))Int

scala> foo(1,2,3)
res23: Int = 1

scala> foo((1,2,3))
res24: Int = 1

This also works the other way round:

scala> Some(1,2,3,4,5)     
res31: Some[(Int, Int, Int, Int, Int)] = Some((1,2,3,4,5))

While this sugar is extremely useful I did not find any documentation concerning this. So my question is basically: Where is this documented in the Scala Language Specification, and what other implications does this have if any.

Regards, raichoo

like image 314
raichoo Avatar asked Nov 05 '22 02:11

raichoo


1 Answers

It is known a Automatic Tupling. I lodged a bug against the language specification, which is silent on this matter.

Here's the relevant part of the compiler source code.

like image 67
retronym Avatar answered Nov 26 '22 09:11

retronym