<div dir="ltr"><div><div><div>Maybe I'm missing something, but can't you just define:<br><br></div>(≡) f g = (f &&& g) >>^ (==)<br><br></div><div>(You could also define it as: (≡) f g x = f x == g x)<br><br></div>And use ≡ at will?<br><br></div><div>Why do you need an instance or a newtype?</div><div><br></div><div>Ivan<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, 31 May 2023 at 04:25, Olaf Klinke <<a href="mailto:olf@aatal-apotheke.de">olf@aatal-apotheke.de</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">Dear Cafe,<br>
<br>
The expression<br>
<br>
\x -> f x == g x<br>
<br>
is a testable property, as long as values for x can be randomly<br>
generated. For clarity I'd prefer a point-free style, e.g. <br>
<br>
f ≡ g<br>
<br>
Are there extensions to QuickCheck that let me write this? The<br>
QuickCheck package itself does not seem to contain such an operator. My<br>
current work-around is a <br>
    newtype ExtensionalEquality a b <br>
that holds two functions of type (a -> b) and a Testable instance for<br>
it. But I've got a hunch that I re-invented some wheel here. (My<br>
ExtensionalEquality is isomorphic to <br>
    Refl (a -> b) (a -> b)<br>
but Refl ist conceptually about type equality, not term equality.)<br>
<br>
Thanks<br>
Olaf<br>
<br>
_______________________________________________<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" 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>