<div dir="auto"><div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">You can solve the (potential) strictness problem like this:</div><div dir="ltr" class="gmail_attr"><br></div><div dir="ltr" class="gmail_attr">  | (iterator < exponent) = result `seq` modLoop (iterator + 1) exponent (mod (result * base) modulus)<br></div><div dir="ltr" class="gmail_attr"><br></div><div dir="ltr" class="gmail_attr">but you'd be better off changing your function to use exponentiation by squaring, which will dramatically reduce the number of multiplications.</div><div dir="ltr" class="gmail_attr"><br></div><div dir="ltr" class="gmail_attr">On Sat, Feb 20, 2021, 7:36 PM A. Mc. <<a href="mailto:47dragonfyre@gmail.com">47dragonfyre@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr">Hello,<div><br></div><div>I'm just starting off, but I'm wondering if anyone has any suggestions.  I've made a recursive function that's goal is to handle a base raised to a very large power.  </div><div><div>modLoop :: Integer -> Integer -> Integer -> Integer -> Integer -> Integer</div><div>modLoop iterator exponent result base modulus</div><div>  | (iterator == exponent) = result</div><div>   | (iterator < exponent) = modLoop (iterator + 1) (exponent) (mod (result * base) modulus) base modulus</div><div>   | (iterator > exponent) = (-1)</div></div><div><br></div><div>However, it flat breaks or takes a long time when using large numbers.</div><div><br></div><div>I need to get better at using strict functions, however, I compiled with ghc -o (as it tends to implement the strict version - ?) and I still have the same problem.  What's a better way?</div><div><br></div><div>Thanks in advance and thank you for your time.</div></div></div>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
Only members subscribed via the mailman list are allowed to post.</blockquote></div></div></div>