使用 WinGHCi 解析预制代码时出现错误
Parsing error on premade code with WinGHCi
我刚刚下载了完整的 Haskell 平台并从我的老师那里输入了一些代码来尝试破解,但结果它(或其他东西)已经被破解了,因为当我评估 main
表达式出现解析错误。
data Shape = Circle Double | Rect Double Double
area :: Shape -> Double
area (Circle radius) = 3.1415 * radius * radius
area (Rect width height) = width * height
错误
<interactive>:17:56: error: parse error on input ‘::’
我的安装有问题吗?我是 运行 版本 8.2.2
编辑:这是直接从 WinGHCi window
中逐字复制粘贴的错误
GHCi, version 8.2.2: http://www.haskell.org/ghc/ :? for help
Prelude> data Shape = Circle Double | Rect Double Double
area :: Shape -> Double
area (Circle radius) = 3.1415 * radius * radius
area (Rect width height) = width * height
<interactive>:7:54: error: parse error on input ‘::’
GHCi 是一个 Read Eval Print Loop (REPL),因此它会在输入时评估每一行。另一方面,area
是一个多行表达式,因此如果您尝试逐行输入它,它将因不完整而失败。
不过,您可以在 GHCi 中输入多行表达式。你需要做的是进入'multiline mode',输入你的行,然后再次退出多行模式。您可以使用 :{
启动此编辑模式,然后使用 :}
再次关闭它。这是一个完整的例子:
Prelude> data Shape = Circle Double | Rect Double Double
Prelude> :{
Prelude| area :: Shape -> Double
Prelude| area (Circle radius) = 3.1415 * radius * radius
Prelude| area (Rect width height) = width * height
Prelude| :}
Prelude> area $ Circle 1.1
3.8012150000000005
Prelude> area $ Rect 1.2 3.4
4.08
如你所见,Shape
的定义已经是单行了,所以那个阶段我觉得没有必要进入多行模式。但是,在输入 area
的定义时,需要使用 :{
和 :}
.
不过,一般来说,GHCi 用于实验和快速反馈。您应该在 .hs
文件中编写 Haskell 源代码,通常使用 Stack or Cabal 作为项目系统。
我刚刚下载了完整的 Haskell 平台并从我的老师那里输入了一些代码来尝试破解,但结果它(或其他东西)已经被破解了,因为当我评估 main
表达式出现解析错误。
data Shape = Circle Double | Rect Double Double
area :: Shape -> Double
area (Circle radius) = 3.1415 * radius * radius
area (Rect width height) = width * height
错误
<interactive>:17:56: error: parse error on input ‘::’
我的安装有问题吗?我是 运行 版本 8.2.2
编辑:这是直接从 WinGHCi window
中逐字复制粘贴的错误GHCi, version 8.2.2: http://www.haskell.org/ghc/ :? for help
Prelude> data Shape = Circle Double | Rect Double Double
area :: Shape -> Double
area (Circle radius) = 3.1415 * radius * radius
area (Rect width height) = width * height
<interactive>:7:54: error: parse error on input ‘::’
GHCi 是一个 Read Eval Print Loop (REPL),因此它会在输入时评估每一行。另一方面,area
是一个多行表达式,因此如果您尝试逐行输入它,它将因不完整而失败。
不过,您可以在 GHCi 中输入多行表达式。你需要做的是进入'multiline mode',输入你的行,然后再次退出多行模式。您可以使用 :{
启动此编辑模式,然后使用 :}
再次关闭它。这是一个完整的例子:
Prelude> data Shape = Circle Double | Rect Double Double
Prelude> :{
Prelude| area :: Shape -> Double
Prelude| area (Circle radius) = 3.1415 * radius * radius
Prelude| area (Rect width height) = width * height
Prelude| :}
Prelude> area $ Circle 1.1
3.8012150000000005
Prelude> area $ Rect 1.2 3.4
4.08
如你所见,Shape
的定义已经是单行了,所以那个阶段我觉得没有必要进入多行模式。但是,在输入 area
的定义时,需要使用 :{
和 :}
.
不过,一般来说,GHCi 用于实验和快速反馈。您应该在 .hs
文件中编写 Haskell 源代码,通常使用 Stack or Cabal 作为项目系统。