下面我得到了函数的定义(一个新的求和函数)
Prelude> :set +m
Prelude> :set -XLambdaCase
Prelude> let sum2=\case
Prelude| []->0
Prelude| x:xs->x+sumw xs
Prelude|
<interactive>:31:5:
parse error (possibly incorrect indentation or mismatched brackets)为什么它不起作用?
发布于 2016-02-18 13:03:19
有两个问题。
let是块先导符,因此let之后的下一个标记(在本例中为sum2)设置块的缩进级别。由于将[]和x:xs模式放在与sum2相同的缩进级别,因此它们是let块的一部分--而您可能希望它们成为\case块的一部分。简单的解决方案是将两个模式缩进至少一个您对空格敏感的character.(=\)的运算符。添加一个空格,以清楚地表明您正在尝试定义sum2。合在一起,你会得到:
Prelude> let sum2= \case
Prelude| []->0
Prelude| x:xs->x+sumw xs
Prelude|
Prelude>https://stackoverflow.com/questions/35472760
复制相似问题