我来自 C++。
此代码:
int main() {
int age;
std::cout << "Type your age: ";
std::cin >> age;
return 0;
}
会在终端上产生类似这样的东西:
Type your age: _
我可以在消息的同一行输入年龄值。
如何在 Haskell 中获得相同的结果?
您可以使用
putStr
函数打印末尾不带换行符的消息:
import System.IO
main = do hSetBuffering stdout NoBuffering
putStr "Type your age: "
age <- readLn::IO Int
return ()
默认情况下,输出会写入缓冲区,直到出现换行符,然后才实际写入标准输出。要禁用缓冲区并直接写入标准输出,您需要运行
hSetBuffering stdout NoBuffering
。 (相关绑定可以在System.IO中找到)