Haskell 布尔表达式:解析错误(可能不正确的缩进或不匹配的括号)

Posted

技术标签:

【中文标题】Haskell 布尔表达式:解析错误(可能不正确的缩进或不匹配的括号)【英文标题】:Haskell boolean expressions : parse error (possibly incorrect indentation or mismatched brackets) 【发布时间】:2017-06-06 05:21:15 【问题描述】:

我正在尝试使用 Haskell。

我写了代码并保存为:boolean.hs

代码是:

let area r = pi * r ^ 2
main = print(area 5 < 50)

当我这样做时,ghc -o boolean boolean.hs

我收到一条错误消息:

[1 of 1] Compiling Main             ( boolean.hs, boolean.o )

boolean.hs:2:1:
    parse error (possibly incorrect indentation or mismatched brackets)

如果有人帮助我了解如何解决此错误,那就太好了。

我通过Haskell|Wikibooks|Identation,将代码改为:

let 
    area r = pi * r ^ 2
main = 
    print(area 5 < 50)

还是得到了:

[1 of 1] Compiling Main             ( boolean.hs, boolean.o )

boolean.hs:3:1:
    parse error (possibly incorrect indentation or mismatched brackets)

问候。 :)

【问题讨论】:

关于let的相关问题 【参考方案1】:

您不需要使用let。只需定义函数并在main 中调用它,即

area r = pi * r ^ 2

main = print (area 5 < 50)

【讨论】:

知道了...谢谢 :) 你能告诉我为什么会这样吗?或者您能指出我如何了解更多信息的方向吗? 当然,这是链接:haskell.org/tutorial/patterns.html。查看第 4.5 节 @PragyadityaDas Bare let 表达式不允许出现在模块的顶层,但它们可以出现在表达式 (let x = 42 in x * x) 或 do 块内 (do let x = 42; print x; )。

以上是关于Haskell 布尔表达式:解析错误(可能不正确的缩进或不匹配的括号)的主要内容,如果未能解决你的问题,请参考以下文章

Haskell:模式中的解析错误

Ghc:部分编译 Haskell 代码?

在 Haskell 中为逻辑表达式生成真值表

为什么会出现解析错误,如何在haskell中解决此错误?

用正则表达式解析布尔算术,包括括号?

在haskell中用aeson解析部分json对象