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

时间:2018-12-11 05:05:25

标签: c++ haskell functional-programming

我来自C ++。

此代码:

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

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

 Type your age: _

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

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

2 个答案:

答案 0 :(得分:5)

您可以使用putStr功能以以下结尾打印不带换行符的消息:

import System.IO

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

答案 1 :(得分:3)

默认情况下,将输出写入缓冲区,直到出现换行符,然后才将其实际写入stdout。要禁用缓冲区并仅直接写入stdout,则要运行hSetBuffering stdout NoBuffering。 (相关的绑定位于System.IO中)