作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
F# 让您可以通过 (
将运算符转换为函数)
:例如,(+)
是 int -> int -> int
类型.
是否可以使用列表 cons 运算符 ::
执行此操作? ?
它的行为不像普通的二元运算符:
FSI> (::);;
(::);;
-^^
c:\temp\stdin(3,2): error FS0010: Unexpected symbol '::' in expression.
Expected ')' or other token.
List.Cons
方法接受一个元组;它不是 curry 。
最佳答案
转述自 http://cs.hubfs.net/forums/permalink/11713/11713/ShowThread.aspx#11713(::)
是 list<'a> type
的可区分联合“构造函数” ,因此提出了一个问题,即作为函数值,它的参数是否应该被柯里化(Currying)(如 +
)或元组(如所有 DU 构造函数)。对于某些人来说,无论哪种方式似乎都很可疑/出乎意料,因此 F# 只是不允许该构造。
当然你总是可以写例如
let cons x y = x :: y
cons
,或者只使用 lambda
fun x y -> x::y
,如果你想要一个“两个参数的 curry 前缀函数”。
关于function - 使用列表 cons 运算符 (a::b) 作为函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3821472/
我是一名优秀的程序员,十分优秀!