2016-10-15 29 views
6

在每隔一段時間你得到一個編譯錯誤是這樣的:Elm中的保留關鍵字是什麼?

It looks like the keyword `port` is being used as a variable. 

這很煩人。這些關鍵字是否有完整的正式列表?我已經找到了where the error messages are generated,但我無法找到關鍵字實際定義的位置。

同時,這裏是我發現通過瀏覽syntax頁面,並在REPL試圖關鍵字的關鍵字可能不完整或不正確的列表:

  • 其中
  • 模塊
  • 曝光
  • 類型
  • 端口
  • 進口
  • infixr
  • 如果
  • 其他
  • 然後
+0

不知道是否有這樣的列表,但再次,我發現編譯器爲我執行查找要容易得多。保存我手動查看某個列表以查明我的變量名稱是否爲保留關鍵字。 – wintvelt

+1

@wintvelt我同意編譯器對於常規開發是足夠好的,但是當開發代碼生成器時,需要在代碼到達編譯器之前清理輸入。 –

回答

7

按照elm-compiler source codelist of reserved keywords是:

keywords = 
    Set.fromList 
    [ "if", "then", "else" 
    , "case", "of" 
    , "let", "in" 
    , "type" 
    , "module", "where" 
    , "import", "exposing" 
    , "as" 
    , "port" 
    ] 

編輯: 實際上還有一些關鍵字(通過回購中的searching for "reserved"找到) 我找到了:infixinfixl,infixr。 OP也注意到了infixr

+0

「其中」可能不是其中之一(榆樹沒有'...其中...... = ...'語法,只有'let ... = ... in ...' –

+0

@dotcs'你可以輸入'f(infix)= 2 * infix'並且它可以正常工作 –

+1

@MartinJaniczek''where''絕對是一個保留字,嘗試輸入'f(where)= 2 * where'在REPL中查看錯誤。 –