我开始在F#(和Scala)冒险.FunProg人们喜欢谈论的主要好处之一是类型推断.在Scala中我可以这样写:
val x = List(1,2,3)
x map ((x) => x+1)
Run Code Online (Sandbox Code Playgroud)
并且编译器知道x是一个列表,因此知道使用map函数的map变量.更进一步,我可以在任何具有map运算符的对象上使用第二个,不管它是什么(list,array,Seq,...)
另一方面,从我见过的关于F#的所有样本中,您必须执行以下操作:
let x = [1;2;3];;
x |> List.map(fun f -> f+1);;
Run Code Online (Sandbox Code Playgroud)
所以我需要知道并定义什么类型x是明确使用的List.map.这对我来说没什么意义,并且否定了整个"不要担心类型"的论点.
我错过了关于F#的一些事情吗?有一个更好的方法吗?