首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Haskell的Lambda案例在Prelude中不能正常工作,解析错误

Haskell的Lambda案例在Prelude中不能正常工作,解析错误
EN

Stack Overflow用户
提问于 2016-02-18 12:20:58
回答 1查看 154关注 0票数 1

下面我得到了函数的定义(一个新的求和函数)

代码语言:javascript
复制
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)

为什么它不起作用?

EN

回答 1

Stack Overflow用户

发布于 2016-02-18 13:03:19

有两个问题。

  1. 由于let是块先导符,因此let之后的下一个标记(在本例中为sum2)设置块的缩进级别。由于将[]x:xs模式放在与sum2相同的缩进级别,因此它们是let块的一部分--而您可能希望它们成为\case块的一部分。简单的解决方案是将两个模式缩进至少一个您对空格敏感的character.
  2. Because,您可能会意外地尝试定义一个名为(=\)的运算符。添加一个空格,以清楚地表明您正在尝试定义sum2

合在一起,你会得到:

代码语言:javascript
复制
Prelude> let sum2= \case
Prelude|      []->0
Prelude|      x:xs->x+sumw xs
Prelude|
Prelude>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35472760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档