В Haskell, возможно ли разделить пользовательский ввод из одной функции ввода-вывода в другую?
Например, если бы у меня было:
main = do
putStrLn "Give me a number!"
my_stuff <- getLine
let nump = read (my_stuff)::Int
another_function nump
Где another_function также является функцией IO с конструкцией do
.
another_function nump = do
putStrLn nump
putStrLn "Try again!"
main
Это будет иметь смысл в интерпретаторе Хаскелла в мире фантазий, который у меня в голове. Однако в реальном мире: my_stuff не связан в another_function; и в основном my_stuff должен быть типа IO t, но это не так.
Вышеприведенный код (скорее всего) будет очень оскорбительным для Хаскеллеров, но я надеюсь, что он передал то, к чему именно я стремлюсь ...
Как мне обойти это?