我们可以在 F# 中编写3 + 4或(+) 3 4并获得相同的结果,这适用于大多数运算符。
为什么 cons 运算符的::行为不同?例如,如果我跑
(::) 1 [2;3]
我得到
error FS0010: Unexpected symbol '::' in expression
而我想得到 [1;2;3]。
在相关说明中,为什么List.Cons不咖喱?没有类型的内置 cons 函数'T -> 'T list -> 'T list吗?
实际上 (::) 不是运算符。这是一个工会案。至少 F# 创建者是这样定义的:
type List<'T> =
| ([]) : 'T list
| (::) : Head: 'T * Tail: 'T list -> 'T list
and 'T list = List<'T>
Run Code Online (Sandbox Code Playgroud)
这是有道理的:列表可以是空的,也可以有头和尾。
关于List.Cons我同意,它应该有签名'T->'T list ->'T list而不是'T*'T List->'T list.
| 归档时间: |
|
| 查看次数: |
88 次 |
| 最近记录: |