为什么这个Haskell代码在第9行(Parse error on input '='
)产生t = 1
?
module Main where
import System.IO
import Data.List.Split
main = do {
flag <- isEOF;
if flag then return 0
else do {
s <- getLine;
t = 1;
print s;
}
}
答案 0 :(得分:4)
let
声明你遗漏了t
,你应该使用一些缩进而不是大括号和分号:
module Main where
import System.IO
import Data.List.Split
main = do
flag <- isEOF
if flag
then return 0
else do
s <- getLine
let t = 1
print s
答案 1 :(得分:0)
正如其他人所说,您在let
之前错过了t = 1
关键字。我很惊讶地发现,一旦添加它,你仍会得到一个解析错误。
在原始示例中使用大括号和分号的语法上有效的解决方案是:
module Main where
import System.IO
import Data.List.Split
main = do {
flag <- isEOF;
if flag then return 0
else do { s <- getLine
; let t = 1
; print s
}
}
为了让它能够编译,您可以将return 0
更改为return ()
:
module Main where
import System.IO
import Data.List.Split
main = do {
flag <- isEOF;
if flag then return ()
else do { s <- getLine
; let t = 1
; print s
}
}