2015-01-03 2 views
0

안녕하세요 저는 꽤 haskell에 새롭고 소수로 프로그램을 만들고 싶습니다. 아래 코드를 사용하여리스트에 2 개의 정수 사이에 모든 소수를 두었습니다. 이제 생성 된리스트의 모든 소수를 합하여 해답으로 나타내려고합니다.생성 된리스트의 하스켈 합

primesR :: Integral a => a -> a -> [a] 
primesR a b = takeWhile (<= b) $ dropWhile (< a) $ sieve [2..] 
    where sieve (n:ns) = n:sieve [ m | m <- ns, m `mod` n /= 0 ] 

나는 생성 된 목록의 합계의 예제를 찾지 못했습니다. 누구든지 코드에서 이것을 어떻게 관리 할 수 ​​있는지 알고 있습니까?

들으

답변

4

그냥 그렇게처럼 sum 함수를 사용

당신이 합계의 결과가 하나의 값이 아니므로, Integral a => a -> a -> aIntegral a => a -> a -> [a]에서 함수 서명을 변경해야
primesR :: Integral a => a -> a -> a 
primesR a b = sum $ takeWhile (<= b) $ dropWhile (< a) $ sieve [2..] 
     where sieve (n:ns) = n:sieve [ m | m <- ns, m `mod` n /= 0 ] 

주 목록.

+0

대단히 감사합니다! – Batsman