我目前正在阅读F#3.0编程,我读到F#支持部分功能应用.
但是,如果我尝试
List.map (+1) [1 .. 10];;
Run Code Online (Sandbox Code Playgroud)
然后我明白了 error FS0001: This expression was expected to have type 'a -> 'b
但List.map (fun x -> x + 1) [1 .. 10];;编译得很好.有什么想法吗?
我想你是来自Haskell,期望它以这种方式工作:)
不幸的是,F#没有语法糖,你可以通过在表达式之前或之后用括号括起来来部分应用运算符.在您的代码中,+1被认为是单个数字标记,这就是为什么它抱怨它不是一个函数.
然而,F#具有的语法是您可以单独为运算符括起来的语法.这导致了@ Lee的解决方案.但要注意这个语法:(+) 1相当于Haskell (1+),而不是(+1).显然,对于添加并不重要,但对于诸如减法之类的非对称操作,它可能会产生误导.