2013-03-09 3 views
1

Эй, поэтому я пытаюсь изучить haskell и im, столкнувшись с трудностями при написании программы, которая требует от меня собирать Ints от пользователя в терминале. как я мог бы сделать это ive попробовал такие вещиHaskell: IO путаница с Ints

import Data.Char (digitToInt) 


getArguments :: IO Int 
getArguments = 
    do putStrLn "Enter the number of arguments you want to have" 
     arguments <- getChar 
     return (digitToInt arguments) 


main :: IO() 
main = do 
    putStrLn "Welcome to Random Argument Generator" 
    let x = getArguments 
    print x+1 

но это не сработает PLZ help!

+1

Есть ли конкретная причина, по которой вы не позволяете пользователю вводить число, состоящее более чем на одну цифру? – sepp2k

ответ

6

заменить let x = getArguments с x <- getArguments

тип подписи для getArguments является (правильно) :: IO Int, что означает, что Int является «завернуты» внутри монады IO, а это значит, что вы должны использовать синтаксис val <- func разворачивать Это.

ЕслиgetArguments были чисто функции (:: Int) синтаксис пусть был бы правильным.

+1

Другая проблема заключается в 'print x + 1', который должен быть записан как' print (x + 1) 'или' print $ x + 1' –

+0

TY! некоторые из обучающих программ, которые я рассматривал, относятся к конкретным случаям, и трудно получить то, что мне нужно сделать – user2150839