Как печатать и читать по одной строке в Haskell? - PullRequest
0 голосов
/ 11 декабря 2018

Я иду из C ++.

Этот код:

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

Создает что-то подобное на терминале:

 Type your age: _

Я могу ввести значение возраста в той же строке сообщения.

Как я могу добиться того же результата в Haskell?

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

По умолчанию вывод записывается в буфер до тех пор, пока не появится новая строка, и только затем фактически записывается в стандартный вывод.Чтобы отключить буфер и просто написать прямо в стандартный вывод, который вы хотите запустить hSetBuffering stdout NoBuffering.(Соответствующие привязки находятся в System.IO)

0 голосов
/ 11 декабря 2018

Вы можете использовать функцию putStr для печати сообщения без перевода строки в конце как:

import System.IO

main = do hSetBuffering stdout NoBuffering
          putStr "Type your age: "
          age <- readLn::IO Int
          return ()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...