`ghci`中的Haskell多行`let` [英] Haskell multi-line `let` in `ghci`

查看:0
本文介绍了`ghci`中的Haskell多行`let`的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在ghci中发现以下功能正常工作:

let foo = ["a", "b", "c"]

.但这不起作用:

let bar = ["a",
           "b",
           "c"]

.这也不是:

let baz = ["a"] ++
          ["b"] ++
          ["c"]

当我尝试将其编译为文件时,提供了相同的错误,因此它不是在ghci与使用ghc时产生的。

错误:

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

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

推荐答案

在GHCI中,您可以使用:{ :}表示多行表达式。例如:

Prelude> :{
Prelude| let bar = ["a",
Prelude|            "b",
Prelude|            "c"]
Prelude| :}

:{ :}可防止GHCi在下一个换行符之后计算代码并向您抛出错误,因为它不是一个完整的表达式。

还请注意,顶级定义不需要let。在普通的Haskell源文件中,您只需编写:

bar = ["a",
       "b",
       "c"]

此外,在较新的GHCi版本(8.0+)中,您也不需要let

这篇关于`ghci`中的Haskell多行`let`的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆