Параметры обмена Haskell IO - PullRequest
       17

Параметры обмена Haskell IO

1 голос
/ 25 октября 2011

В 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, но это не так.

Вышеприведенный код (скорее всего) будет очень оскорбительным для Хаскеллеров, но я надеюсь, что он передал то, к чему именно я стремлюсь ...

Как мне обойти это?

1 Ответ

5 голосов
/ 25 октября 2011

Этот код работает. Это то, что вы хотите сделать? Если нет, можете ли вы предоставить код, который не работает?

main = do
    putStrLn "Give me a number!"
    my_stuff <- getLine 
    let nump = read (my_stuff)::Int
    another_function nump

another_function nump = do
    putStrLn $ show nump
    putStrLn "Try again!"
    main
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...