2013-03-09 2 views
1

안녕하세요. 저는 터미널에서 사용자로부터 Ints를 수집해야하는 프로그램을 작성하는 데 문제가있는 haskell과 im을 배우려고합니다. 어떻게 이런 일을 시도 할 것입니까?하스켈 : In과의 IO 혼동

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 도움말을 작동하지 않습니다!

+1

사용자가 한 자리 이상의 숫자를 입력 할 수없는 특별한 이유가 있습니까? – sepp2k

답변

6

Int 당신이 포장을 푸는하는 val <- func 구문을 사용에있는 것을 의미 IO 모나드, 내부에 '포장'을 의미합니다 (제대로) x <- getArguments

getArguments에 대한 형식 서명이 :: IO Intlet x = getArguments 교체 그것.

하면getArguments 순수한 기능 (:: Int)을하자 구문이 정확했을 것이다이었다.

+1

또 다른 문제점은'print x + 1'입니다.'print (x + 1)'또는'print $ x + 1'로 쓰여야합니다 –

+0

TY! 필자가 보았던 자습서 중 일부는 사례별로 다르며 내가해야 할 일을 파생시키기가 어렵습니다. – user2150839