2013-03-14 5 views
-6

처음에는 테스트 케이스의 수를 나타내는 정수 (t)가 있습니다. 그러면 2 * t 줄이옵니다. 각 줄에는 정수가 있습니다. 우리는 두 숫자의 합을 출력해야합니다.haskell을 사용한 정수 추가 프로그램

시료 입력 :

3 
1 
2 
3 
4 
5 
6 

샘플 출력 :

3 
7 
11 
+2

이 숙제가 있습니까? 숙제 태그를 추가해야합니다. 당신이 * haskell에서 이것을 달성하기 위해 시도한 것은 무엇입니까? 너는 어디에서 stymied입니까? – rampion

+0

번호. 나는 C, C++ 및 java 만 알고 있습니다. 나는 Haskell에 익숙해지고 싶다. – john

+0

루프를 실행하여 'n'개의 숫자를 다른 행에 인쇄하는 프로세스는 무엇입니까? – john

답변

0
import Control.Monad (replicateM) 

main :: IO() 
main = mapM_ print . map (uncurry (+)) =<< flip replicateM readIntPair =<< readLn 

readIntPair :: IO (Integer, Integer) 
readIntPair = do 
    x <- readLn 
    y <- readLn 
    return (x, y) 

replicateM 다른 기능은 Prelude에서 자동으로 가져, Control.Monad에서이다.

표기법을 설명하는 자습서의 일부를 읽고 싶을 수도 있습니다. 표기법은 명령형 목록과 동일하지만 미묘하게 다릅니다.

+0

오! 알았다. 그런데 haskell에는 정수 사용에 대한 제한이 없습니다 (C/C++에서는 64 비트로 제한됨). 어떻게이 코드를 실행하여 수정할 수 있습니까? BigInteger – john

+0

@john 코드를 편집했습니다. 대부분 정수형으로'Int'를'Integer'로 대체했습니다. 복잡성은'replicateM'이'Int'를 취하여 액션을 수행 할 횟수를 지정하므로'Int'로 남아 있어야하고'Integer'로 변경할 수 없다는 것입니다. – dave4420

+3

간결하지만, 나는 이것이 가장 교육적인 코드라고 확신하지 못했습니다! –