lop*_*304 2 string io haskell list
我正在尝试编写一个函数,它获取多个字符串输入并终止于空行('\n')我有以下内容
getLines :: IO [String]
getLines = do x <- getLine
if x == ""
return ()
else do xs <- getLines
return (x:xs)
Run Code Online (Sandbox Code Playgroud)
它无法编译说if语句有问题
理想情况下,我想这样工作
getLines
苹果
鸟
猫
(输入按下)
输出:["Apple","Bird","Cat"]
你需要then之后if,()(空元组)应该是[](空列表).在if,then并且else需要缩进,如果它们在单独的行上,因为if then else是一个运算符,并且编译器需要知道表达式继续.你的缩进需要调整,以便所有内容都比领先缩进更多do:
getLines :: IO [String]
getLines = do x <- getLine
if x == ""
then return []
else do xs <- getLines
return (x:xs)
Run Code Online (Sandbox Code Playgroud)
或者所有内容都比包含前导的行缩进更多do:
getLines :: IO [String]
getLines = do
x <- getLine
if x == ""
then return []
else do
xs <- getLines
return (x:xs)
Run Code Online (Sandbox Code Playgroud)
作为一种风格,你也可以用null x而不是x == "".
| 归档时间: |
|
| 查看次数: |
1047 次 |
| 最近记录: |