“id”字面定义在哪里?

时间:2010-08-03 12:15:25

标签: f#

FsUnit源代码包含一个不寻常的定义:

let be = id

FSI输出:

val was : ('a -> 'a)

“id”的语义是以下语句的括号形式:

let be x = x

FSI输出:

val be : 'a -> 'a

您可以看到略有不同:后一个示例将表达式为真替换为 true ,而第一个语法将其表示为(true)

让我感到困惑的是,我在F#语言参考中找不到任何对“id”的引用,也没有在“Programming F#”一书中描述过。此外,“id”不是保留关键字,我可以定义为其他东西分配“id”,然后我不再能够以第一个例子中显示的方式使用它。所以我想知道是否有任何描述这个文字及其语义的F#文档。

2 个答案:

答案 0 :(得分:12)

大多数这些内置函数都在FSharp.CoreMicrosoft.FSharp.Core.Operators模块中定义。

他们在MSDN上有记录。这是idhttp://msdn.microsoft.com/en-gb/library/ee353607.aspx

答案 1 :(得分:1)

这根本不像文字。它看起来更像是一个功能。具体来说,通过签名和名称猜测,它看起来像身份函数。