如何在Haskell中在同一行打印和读取?

问题描述 投票:0回答:2

我来自 C++。

此代码:

 int main() {
     int age; 
     std::cout << "Type your age: ";
     std::cin  >> age;
     return 0;
 }

会在终端上产生类似这样的东西:

 Type your age: _

我可以在消息的同一行输入年龄值。

如何在 Haskell 中获得相同的结果?

haskell functional-programming
2个回答
5
投票

您可以使用

putStr
函数打印末尾不带换行符的消息:

import System.IO

main = do hSetBuffering stdout NoBuffering
          putStr "Type your age: "
          age <- readLn::IO Int
          return ()

3
投票

默认情况下,输出会写入缓冲区,直到出现换行符,然后才实际写入标准输出。要禁用缓冲区并直接写入标准输出,您需要运行

hSetBuffering stdout NoBuffering
。 (相关绑定可以在System.IO中找到)

© www.soinside.com 2019 - 2024. All rights reserved.