首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Haskell的逐行阅读

Haskell的逐行阅读
EN

Stack Overflow用户
提问于 2015-11-27 02:10:01
回答 2查看 886关注 0票数 2

我试图逐行读取标准输入,并使用foo :: String -> Int类型的函数处理每一行。如果我们不知道我们想要读的行数,或者考虑到第一行上提供了行数,那么有什么方法可以做到吗?

我尝试过的很多东西都会产生毫无意义的错误,比如“解析器错误”。例如

代码语言:javascript
运行
AI代码解释
复制
main = do {
    getLine <- getContents;
    let result = show (foo getLine);
    putStrLn (foo result);
}

编辑 Strange,但这不会打印

代码语言:javascript
运行
AI代码解释
复制
main = do {
    a <- getContents;
    putStrLn (show (length a));
}

但是,这确实打印了5。

代码语言:javascript
运行
AI代码解释
复制
main = do {
    a <- getContents;
    putStrLn (show 5);
}
EN

回答 2

Stack Overflow用户

发布于 2015-11-27 02:50:52

这样做的主要例子如下:

代码语言:javascript
运行
AI代码解释
复制
main = do
    line <- getLine
    yourfunction line
    main

这将永远占用行,并使用您的函数处理它们,如果您希望它在某个时候停止,只需检查一个命令,例如:

代码语言:javascript
运行
AI代码解释
复制
main = do
    line <- getLine
    let res = yourfunction line
    if res == "Exit" then IO () else main
票数 3
EN

Stack Overflow用户

发布于 2015-11-27 02:27:38

您可以使用函数lines将字符串转换为字符串。然后,在下面的行列表上使用map foo

关于编辑:你的程序打印长度为我工作。尝试输入一个文件,或者-如果以交互方式输入输入-正确终止(通过Ctrl)。

侧边:通常很少见到卷发括号和分号。但这只是风格。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33955026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档