F#区分大小写吗?

时间:2010-09-17 23:41:55

标签: f# case-insensitive case-sensitive

我在这里和网上搜索但没有回答。

我问的原因是,由于F#约定似乎有利于非大写字母,因此使用带有Pascal约定的BCL类型在F#中看起来很奇怪,如:

let stringD = String.Join(" ",[| stringA; stringB |])

似乎更符合F#的精神:

let stringD = string.join(" ",[| stringA; stringB |])

3 个答案:

答案 0 :(得分:8)

好的,有些事情。

首先,F#区分大小写。

其次,命名的F#约定在F# Component Design Guidelines 中描述。简而言之,F#模块中的let-bound成员使用camelCase,但所有.NET OO构造都使用PascalCase。整个F#库都是如此。

最后,在F#中string不是关键字,而是type abbreviationSystem.String)的名称和function的名称(转换为字符串)。在string.Join的表达式上下文中,函数名称优先,这就是string.Join不起作用的原因。由于区分大小写,System.String.join永远不会起作用(除非您添加了扩展成员)。

答案 1 :(得分:2)

是的,F#是区分大小写的

let stringD = string.join(" ",[| stringA; stringB |])

不行。

答案 2 :(得分:1)

令人惊讶的是,the F# Language Specification没有明确提到区分大小写,但确实提到使用不同的大写字母用于内在函数/语言和用户定义的类型参数(5.1.2)

虽然我对F#的体验有限(超出Hello World风格的应用程序),但我认为string.join不会绑定到String.Join