看起来关键字“in”用作变量

时间:2018-01-16 17:52:17

标签: elm

http://elm-lang.org/try中粘贴以下代码,然后点击“编译”:

import Html exposing (text)

main =
  let (x, y, _) = List.foldL (\elem (sum, diff, mult) ->
      (sum + elem, elem - diff, mult * elem)
    ) (0, 0, 0) [1, 2, 3, 4, 5] in
  text ("Hello, World!" ++ toString x)

导致意外错误:

  

1个模块中检测到的错误    - 语法问题---------------------------------------------- --------------

     

看起来关键字in被用作变量。

     

7 | )(0,0,0)[1,2,3,4,5] in   ^
  将其重命名为其他内容。

这里有什么问题?括号匹配。

1 个答案:

答案 0 :(得分:5)

缩进在Elm中很重要,并且你有一个左括号(第二行到最后一行)的右括号。将其更改为有效代码(也是List.foldl,而不是foldL):

main =
  let (x, y, _) = List.foldl (\elem (sum, diff, mult) ->
      (sum + elem, elem - diff, mult * elem)
      ) (0, 0, 0) [1, 2, 3, 4, 5] in
  text ("Hello, World!" ++ toString x)

in语句放在自己的行上并与let对齐,这可能更为惯用,只是为了保持清晰:

main =
  let (x, y, _) = List.foldl (\elem (sum, diff, mult) ->
      (sum + elem, elem - diff, mult * elem)
      ) (0, 0, 0) [1, 2, 3, 4, 5]
  in
  text ("Hello, World!" ++ toString x)

您还可以在编辑过程中加入elm-format,以便在保存时自动设置代码格式。