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

It looks like the keyword "in" is used as a variable

将以下代码粘贴到 http://elm-lang.org/try 并单击 "Compile" :

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)

导致意外错误:

Detected errors in 1 module.
-- SYNTAX PROBLEM ------------------------------------------------------------

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

7| ) (0, 0, 0) [1, 2, 3, 4, 5] in
                                        ^
Rename it to something else.

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

缩进在 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 合并到您的编辑过程中,以便在保存时自动格式化您的代码。