每隔一段时间你就会遇到这样的编译错误:
It looks like the keyword `port` is being used as a variable.
这太烦人了。这些关键字是否有完整的官方列表?我已经找到了where the error messages are generated,但我无法找到实际定义关键字的位置。
与此同时,通过浏览syntax页面并在repl中尝试关键字,我发现可能不完整或不正确的关键字列表:
答案 0 :(得分:7)
根据elm-compiler source code,list of reserved keywords是:
keywords =
Set.fromList
[ "if", "then", "else"
, "case", "of"
, "let", "in"
, "type"
, "module", "where"
, "import", "exposing"
, "as"
, "port"
]
编辑:
实际上还有一些关键字(在回购中由searching for "reserved"找到)
我找到了:infix
,infixl
,infixr
。 OP也注意到infixr
。
答案 1 :(得分:1)
由于@oustad(在elmslack上),正确的列表可以包含here,并且其中包含所有保留字(包括where
和infix
)。
module Parse.Primitives.Keyword
( type_, alias_, port_
, if_, then_, else_
, case_, of_
, let_, in_
, infix_, left_, right_, non_
, module_, import_, exposing_, as_, where_, effect_
, command_, subscription_
, jsonTrue, jsonFalse, jsonNull
)