Недавно я начал изучать Haskell. У меня есть этот кодHaskell Console IO в блокноте ++
module Main
where
import IO
main = do
hSetBuffering stdin LineBuffering
putStrLn "Please enter your name: "
name <- getLine
putStrLn ("Hello, " ++ name ++ ", how are you?")
Я использую компилятор GHC вместе с редактором notepad ++. Проблема взаимодействия выглядит следующим образом:
Процесс начался >>>
Влад
Пожалуйста, введите ваше имя:
Здравствуйте, Влад, как ты?
< < < Процесс завершен.
Как вы можете видеть, вывод записывается только после ввода ввода чего-то. Это было немного неожиданно, поскольку я был уверен, что программа сначала спросит мое имя, затем я войду в него, и тогда он поздоровался. Ну, это именно то, что произойдет, если я запустил exe вручную, но не буду запускать его с помощью блокнота ++ и использовать его консольную оболочку ...
Как я могу сделать блокнот ++ отображать вывод, когда он должен, а не все? незадолго до завершения программы? Возможно ли это?
Это сработало, спасибо. Это правда, это не так, я не знаю, почему это важно в блокноте ++. Я добавил, что, поскольку этот http://www.cs.utah.edu/~hal/docs/daume02yaht.pdf (на странице 40 что-то) говорит, что он должен исправить именно эту проблему, но я не думал также о LineBuffering stdout. – IVlad
Ну, на самом деле, это не говорит, что это должно исправить именно это. В нем говорится, что он должен исправить ошибки, когда чтение ввода не завершено после ввода одной строки. Поэтому я предполагаю, что в этом случае я должен быть LineBuffering stdout. Еще раз спасибо! – IVlad