第 11 章 OCaml 程式語言

3 名稱

識別符號用於為數種語言物件指定名稱,並在稍後透過名稱參照這些物件。

這十一個命名空間可以透過上下文以及識別符號的大小寫來區分:識別符號的第一個字母是否為小寫(以下寫為 lowercase-ident)或大寫(寫為 capitalized-ident)。為此目的,底線被視為小寫字母。

命名物件

value-name::= lowercase-ident
 (operator-name)
 
operator-name::= prefix-symbol ∣ infix-op
 
infix-op::= infix-symbol
 * ∣ + ∣ - ∣ -. ∣ = ∣ != ∣ < ∣ > ∣ or ∣ || ∣ & ∣ && ∣ :=
 mod ∣ land ∣ lor ∣ lxor ∣ lsl ∣ lsr ∣ asr
 
constr-name::= capitalized-ident
 
tag-name::= capitalized-ident
 
typeconstr-name::= lowercase-ident
 
field-name::= lowercase-ident
 
module-name::= capitalized-ident
 
modtype-name::= ident
 
class-name::= lowercase-ident
 
inst-var-name::= lowercase-ident
 
method-name::= lowercase-ident

另請參閱以下語言擴展:擴展索引運算子

如上所示,前綴和中綴符號以及一些關鍵字可以作為值名稱使用,前提是它們寫在括號之間。大小寫規則總結在下表中。

命名空間第一個字母的大小寫
小寫
建構子大寫
標籤小寫
多型變體標籤大寫
例外大寫
類型建構子小寫
記錄欄位小寫
類別小寫
實例變數小寫
方法小寫
模組大寫
模組類型任意

關於多型變體標籤的注意事項:目前的實作除了接受大寫變體標籤外,也接受小寫變體標籤,但為了與未來 OCaml 版本的可攜性和相容性,我們建議您避免使用小寫變體標籤。

參照具名物件

具名物件可以透過其名稱(遵循名稱的常用靜態作用域規則)或透過存取路徑 prefix . name 來參照,其中 prefix 指定一個模組,而 name 是在該模組中定義的物件的名稱。路徑的第一個組件,prefix,要不是一個簡單的模組名稱,就是一個存取路徑 name1 . name2 …,如果定義模組本身嵌套在其他模組內。若要參照類型建構子、模組類型或類別類型,prefix 也可能包含簡單的函式應用程式(如同上述語法類別 extended-module-path),如果定義模組是函式應用程式的結果。

標籤名稱、標籤、方法名稱和實例變數名稱不需要限定:前三者是全域標籤,而後者則為類別的本地變數。