在 ghci 中用花括号做块抛出错误
do block with flower brackets in ghci throws error
我有一个代码可以在 do 块中使用 print 作为,
do { print ([(n, 2^n) | n <- [0..19]]) }
然后我尝试了一个更简单的版本来打印变量值,
do { let a = 1; print (a) }
它抛出错误 parse error on input }
还有什么,我试过了没有成功---
ghci> let a = 1; print (a)
和
ghci> :{
| let a = 1;
| print (a)
| :}
一旦开始 let
语句,该行的其余部分将被视为额外的 let
赋值。考虑此错误消息:
ghci> do print 1; let c = 2; d = 3
<interactive>:3:13:
The last statement in a 'do' block must be an expression
let c = 2
d = 3
请注意,d = 3
不需要 let
关键字。
要在 let
之后添加一个 monadic 语句,您需要将其放在单独的一行中(使用正确的缩进):
ghci> :{
| do print 1; let a = 2; b = 3
| print b
| :}
1
3
AFAIK,无法在同一行的 let
之后放置 monadic 语句。
我有一个代码可以在 do 块中使用 print 作为,
do { print ([(n, 2^n) | n <- [0..19]]) }
然后我尝试了一个更简单的版本来打印变量值,
do { let a = 1; print (a) }
它抛出错误 parse error on input }
还有什么,我试过了没有成功---
ghci> let a = 1; print (a)
和
ghci> :{
| let a = 1;
| print (a)
| :}
一旦开始 let
语句,该行的其余部分将被视为额外的 let
赋值。考虑此错误消息:
ghci> do print 1; let c = 2; d = 3
<interactive>:3:13:
The last statement in a 'do' block must be an expression
let c = 2
d = 3
请注意,d = 3
不需要 let
关键字。
要在 let
之后添加一个 monadic 语句,您需要将其放在单独的一行中(使用正确的缩进):
ghci> :{
| do print 1; let a = 2; b = 3
| print b
| :}
1
3
AFAIK,无法在同一行的 let
之后放置 monadic 语句。