この質問は、keywords as identifiersではなく、識別子の文字についてです。F#識別子、モジュール、タイプ、メンバー名にはどのような文字が使用できますか?
this question on C# namesが見つかりましたが、F#で同じことが容易に見つかりませんでした。通常、これはほとんど関連性があるが、私のテストでは、私はしばしばドット.
を使用し、それがモジュール名でサポートされていませんでしたが、let束縛でサポートされて驚いたの命名:テストに名前を付けるの外
// fails:
module ``Run Test.Me functions`` =
[<Test>]
let ``X.Add should add``() = test <@ X.Add 2 2 = 4 @>
// Succeeds
module ``Run Test-Me functions``
[<Test>]
let ``X.Add should add``() = test <@ X.Add 2 2 = 4 @>
私はこれにはあまり使われていませんが、タイプとモジュール名でサポートされている文字は何ですか?
一部のテスト:
module ``Weird.name`` =() // fails
module ``Weird-name`` =() // succeeds
module ``Weird()name`` =() // succeeds (?)
module ``Weird*name`` =() // fails
module ``Weird+name`` =() // fails
module ``Weird%name`` =() // succeeds (?)
module ``Weird/name`` =() // fails
module ``Weird\\name`` =() // fails
これらの名称はすべてではなく、タイプ名やモジュール名など、聞かせて結合またはメンバー名に成功しました。少なくともそれは一貫しています。しかし、私は許可されているものとないものを見つけることができません。
おそらくF#自体ではなくCLR/MSILによって制限が課されるのでしょうか?
@guy、私は他の画面で開かれたlang仕様を持っていることがありますが、なぜ私はそれを見つけなかったのでしょうか。あなたはそれを答えに変えたいと思うかもしれませんが、たとえ誰かがスペックでそれを見つけることができたとしても、Q&Aとしてここに置くことは悪いはずはないと思ってください(しかし、正直なところ、読みにくいです!) – Abel