<div dir="ltr"><div>There really should be a NO_ETA pragma. I made a feature request:</div><div><br></div><a href="https://code.google.com/p/agda/issues/detail?id=1536">https://code.google.com/p/agda/issues/detail?id=1536</a><br><div><br></div><div>/ Ulf</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jun 2, 2015 at 9:21 PM, Andrea Vezzosi <span dir="ltr">&lt;<a href="mailto:sanzhiyan@gmail.com" target="_blank">sanzhiyan@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Maybe it&#39;s nicer to use if you keep the same fields:<br>
<br>
open import Data.Bool<br>
<br>
record Σ&#39; (b : Bool) (A : Set) (B : A -&gt; Set) : Set where<br>
  inductive<br>
  constructor _,_<br>
  field<br>
    fst : A<br>
    snd : if b then (B fst) else Σ&#39; b A B<br>
<br>
Σ = Σ&#39; true<br>
<br>
Cheers,<br>
Andrea<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
On Tue, Jun 2, 2015 at 8:53 PM, Nils Anders Danielsson &lt;<a href="mailto:nad@cse.gu.se">nad@cse.gu.se</a>&gt; wrote:<br>
&gt; On 2015-06-02 18:44, Andrea Vezzosi wrote:<br>
&gt;&gt;<br>
&gt;&gt; One hacky way would be to declare them coinductive, that would disable<br>
&gt;&gt; eta but also pattern matching.<br>
&gt;&gt;<br>
&gt;&gt; record Foo .. : Set where<br>
&gt;&gt;     coinductive<br>
&gt;&gt;     field<br>
&gt;&gt;        bar : ...<br>
&gt;<br>
&gt;<br>
&gt; Another hack:<br>
&gt;<br>
&gt;   record Σ (A : Set) (B : A → Set) : Set where<br>
&gt;     inductive<br>
&gt;     field<br>
&gt;       fst   : A<br>
&gt;       snd   : B fst<br>
&gt;       dummy : ⊥ → Σ A B<br>
&gt;<br>
&gt; And another one:<br>
&gt;<br>
&gt;   Make-Agda-believe-that-the-type-is-recursive : Set → Bool → Set<br>
&gt;   Make-Agda-believe-that-the-type-is-recursive _ true  = ⊤<br>
&gt;   Make-Agda-believe-that-the-type-is-recursive A false = A<br>
&gt;<br>
&gt;   record Σ (A : Set) (B : A → Set) : Set where<br>
&gt;     inductive<br>
&gt;     constructor internal-Σ-constructor<br>
&gt;     field<br>
&gt;       fst    : A<br>
&gt;       snd    : B fst<br>
&gt;       dummy₁ : Bool<br>
&gt;       dummy₂ : dummy₁ ≡ true<br>
&gt;       dummy₃ : Make-Agda-believe-that-the-type-is-recursive<br>
&gt;                  (Σ A B) dummy₁<br>
&gt;<br>
&gt;   pattern _,_ x y = internal-Σ-constructor x y true refl _<br>
&gt;<br>
&gt; More seriously, I think there used to be an undocumented pragma that<br>
&gt; turned off η-equality, but it seems to have been removed.<br>
&gt;<br>
&gt;&gt; On Tue, Jun 2, 2015 at 6:03 PM, Thorsten Altenkirch<br>
&gt;&gt; &lt;<a href="mailto:Thorsten.Altenkirch@nottingham.ac.uk">Thorsten.Altenkirch@nottingham.ac.uk</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I was just starting to use some records to restructure some code we<br>
&gt;&gt;&gt; are working on and the memory goes through the roof.<br>
&gt;<br>
&gt;<br>
&gt; Can you report this on the bug tracker? Please include the two versions<br>
&gt; of the code (one with lower memory consumption, and one with higher).<br>
&gt;<br>
&gt; --<br>
&gt; /NAD<br>
&gt;<br>
_______________________________________________<br>
Agda mailing list<br>
<a href="mailto:Agda@lists.chalmers.se">Agda@lists.chalmers.se</a><br>
<a href="https://lists.chalmers.se/mailman/listinfo/agda" target="_blank">https://lists.chalmers.se/mailman/listinfo/agda</a><br>
</div></div></blockquote></div><br></div>