榆树中保留的关键字是什么?

时间:2016-10-15 10:41:02

标签: elm

每隔一段时间你就会遇到这样的编译错误:

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

这太烦人了。这些关键字是否有完整的官方列表?我已经找到了where the error messages are generated,但我无法找到实际定义关键字的位置。

与此同时,通过浏览syntax页面并在repl中尝试关键字,我发现可能不完整或不正确的关键字列表:

  • ,其中
  • 模块
  • 暴露
  • 端口
  • 进口
  • infixr
  • 作为
  • 如果
  • 否则
  • 然后

2 个答案:

答案 0 :(得分: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"找到) 我找到了:infixinfixlinfixr。 OP也注意到infixr

答案 1 :(得分:1)

由于@oustad(在elmslack上),正确的列表可以包含here,并且其中包含所有保留字(包括whereinfix)。

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
  )