[('a',1);('b',2);('c',3)] |> List.map String
In F# 4.0 the compiler infers that String takes 2 arguments and extracts the tuple accordingly.In Scala we're forced to manually extract the tuple when the recipient function takes more than a single argument.
def plus(a: Int, b: Int) = a + b
List((1,2),(3,4)) map plus // kaboom
List((1,2),(3,4)).map{case(a,b)=> plus(a,b)} // ok
We'll see where the Microsoft OSS movement goes. If in the not too distant future we can seamlessly take advantage of, for example, Type Providers and LINQ-to-SQL/Objects on Linux, I'll certainly give F# a deeper look.Side note: the next 3 to 4 years will be huge in computing, IMO. Microsoft stack is coming to Linux and OSX, Oracle is finally pushing forward Java and the JVM, and FP languages in general seem to be picking up steam in terms of adoption. Good times ahead for everyone ;-)