Функция printfn
в базовой библиотеке F # снабжена специальным атрибутом CompiledName
, который указывает имя функции в скомпилированном виде:
[<CompiledName("PrintFormatLine")>]
let printfn fp = ...
Для чего это нужно? Я думаю, что мотивация состоит в том, что библиотека FSharp.Core.dll
должна следовать обычным правилам именования .NET. Однако правила именования F # немного отличаются (допускаются имена в нижнем регистре и т. Д.), Поэтому этот атрибут используется для того, чтобы библиотека выглядела как обычная библиотека .NET.
Я не думаю, что это то, что пользователи F # использовали бы сами. Если вы пишете код, который будет использоваться из C #, пишите его в дружественном для C # стиле, и если вы пишете код, который будет использоваться из F #, следуйте рекомендациям по именованию F #.