在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 ^
将其重命名为其他内容。
这里有什么问题?括号匹配。
答案 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
,以便在保存时自动设置代码格式。