<div dir="ltr">Very interesting!  I did not know about primForce.<div>Thanks,</div><div>Aaron</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, May 2, 2021 at 12:17 PM Nils Anders Danielsson <<a href="mailto:nad@cse.gu.se">nad@cse.gu.se</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 2021-05-02 06:09, Aaron Stump wrote:<br>
> This is like being call-by-value for let-terms, and otherwise<br>
> normal-order.  Then busy n will normalize in O(n) steps, not O(2^n).<br>
<br>
The term busy 3000 normalises quickly if you write the code in the<br>
following way:<br>
<br>
   open import Agda.Builtin.Nat<br>
   open import Agda.Builtin.Strict<br>
<br>
   busy : Nat → Nat → Nat<br>
   busy 0       = λ x → x<br>
   busy (suc n) =<br>
     primForce (busy n) λ f →<br>
     λ x → f (f x)<br>
<br>
However, this does not apply to the following piece of code:<br>
<br>
   open import Agda.Builtin.Nat<br>
   open import Agda.Builtin.Strict<br>
<br>
   busy : Nat → Nat → Nat<br>
   busy 0       = λ x → x<br>
   busy (suc n) = λ x →<br>
     primForce (busy n) λ f →<br>
     f (f x)<br>
<br>
-- <br>
/NAD<br>
_______________________________________________<br>
Agda mailing list<br>
<a href="mailto:Agda@lists.chalmers.se" target="_blank">Agda@lists.chalmers.se</a><br>
<a href="https://lists.chalmers.se/mailman/listinfo/agda" rel="noreferrer" target="_blank">https://lists.chalmers.se/mailman/listinfo/agda</a><br>
</blockquote></div>