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#文档。
答案 0 :(得分:12)
大多数这些内置函数都在FSharp.Core
库Microsoft.FSharp.Core.Operators
模块中定义。
他们在MSDN上有记录。这是id
:http://msdn.microsoft.com/en-gb/library/ee353607.aspx
答案 1 :(得分:1)
这根本不像文字。它看起来更像是一个功能。具体来说,通过签名和名称猜测,它看起来像身份函数。