I had know the difference between F# library and .NET library when I called their functions.
But when I saw the statement “printfn” in VS 2010 object browser, I saw only the “public static T PrintFormatLine(… format)” instead of “printfn”.
Why has the statement “printfn” in F# library different name in VS2010 object browser?
How can I call functions in F# library, if there aren’t documents for the F# library, because the names in VS 2010 object browser are totally different?
The
printfnfunction in the F# core library is annotated with a special attributeCompiledNamethat specifies the name of the function in a compiled form:What is this good for? I think the motivation is that the
FSharp.Core.dlllibrary should follow the usual .NET naming guidelines. However, F# naming guidelines are a bit different (lowercase names are allowed, etc.), so the attribute is used to make the library look more like ordinary .NET library.I don’t think this is something that users of F# would use themselves. If you’re writing code that will be used from C#, write it in a C# friendly style and if you’re writing code that will be used from F#, follow the F# naming guidelines.