cumfib의 각 요소에 대해 fib가 start로부터 평가됩니까?확장 목록의 평가 빈도는 얼마나됩니까
fib = (1:1: zipWith (+) fib (tail fib))
cumfib = [ sum $ take i fib | i<-[1..]]
또는 cumsum의 요소 (i + 1)에 대해 캐시되고 재사용되는 첫 번째 요소는 무엇입니까?
필자는 fib가 동일한 람다 식에서 사용되고 따라서 단 한번 계산된다는 것을 추측합니다.
또한 i 번째 피보나치 수를 계산하는 빈도에 관한 fib 문제를 구현합니까? 내 실제 문제는 피보나치 수 대신 소수 (prime number)를 염두에두고있다. 피보나치 수는 어떤 숫자 n의 소수 요소를 쉽게 계산할 수 있도록 '캐시'하고 싶다. 그러나, 나는 단지
takeWhile (\x-> x*x<n) primes
의 소수를 사용합니다. 내가 더 큰 N, 소수 증가의 부분 집합 먼저하고 나중에 작은 n에 요인을 평가하고, 내가 할 경우 따라서 나는 소수가 평가하는 빈도, 궁금해 이후 : 소수 번 평가 여부
primes = ... some way of calculating primes ...
helpHandlePrimes ... = ... using primes ...
handlePrimes = ... using primes and helpHandlePrimes ...
은 알려 주시기 바랍니다 , 여러 번 또는 내가이 질문을 어떻게 공식화했는지에 따라 결정할 수 없는지에 대해
'fib'가 어디에 쓰여 있는지에 따라 달라질 수 있습니다. 최고 수준의 가치입니까? 아니면 일부 함수에서 let 제본 변수입니까? – Ingo
최상위 레벨이지만 someFuntion ... = .... 여기서 fibsOfInterest = takeWhile (<= 1000) fibs는 여전히 작동합니까? – Herbert
예, 재검사가 필요없는 fibs는 필요에 따라 확장 될 것입니다. – Ingo