2010-08-03 3 views
5

FsUnit исходный код содержит необычное определение:Где определяется литер «id»?

let be = id

FSI выход:

val was : ('a -> 'a)

семантикой "ид" является в скобках форма следующего утверждения:

let be x = x

FSI:

val be : 'a -> 'a

Вы можете увидеть небольшое различие: последний пример заменяет выражение верно с истинным, в то время как первый синтаксис будет представлять его как (правда).

Что меня озадачивает, так это то, что я не могу найти ссылку на «id» в справочнике языка F #, и это не описано в книге «Программирование F #». Более того, «id» не является зарезервированным ключевым словом, я могу определить «id» для чего-то еще, а затем я больше не могу использовать его таким образом, который показан в первом примере. Поэтому мне интересно, есть ли какие-либо документы F #, которые описывают этот литерал и его семантику.

ответ

12

Большинство из этих встроенных функций определены в библиотеке FSharp.Core, Microsoft.FSharp.Core.Operators.

Они задокументированы на MSDN. Вот id: http://msdn.microsoft.com/en-gb/library/ee353607.aspx

+0

Я вижу. Спасибо, Тим. –

1

Это не похоже на литерал. Это больше похоже на функцию. В частности, угадывая подпись и имя, она выглядит как функция идентификации.

Смежные вопросы