[Haskell-cafe] property testing, point-free style

Ivan Perez ivanperezdominguez at gmail.com
Wed May 31 12:36:01 UTC 2023


Maybe I'm missing something, but can't you just define:

(≡) f g = (f &&& g) >>^ (==)

(You could also define it as: (≡) f g x = f x == g x)

And use ≡ at will?

Why do you need an instance or a newtype?

Ivan

On Wed, 31 May 2023 at 04:25, Olaf Klinke <olf at aatal-apotheke.de> wrote:

> Dear Cafe,
>
> The expression
>
> \x -> f x == g x
>
> is a testable property, as long as values for x can be randomly
> generated. For clarity I'd prefer a point-free style, e.g.
>
> f ≡ g
>
> Are there extensions to QuickCheck that let me write this? The
> QuickCheck package itself does not seem to contain such an operator. My
> current work-around is a
>     newtype ExtensionalEquality a b
> that holds two functions of type (a -> b) and a Testable instance for
> it. But I've got a hunch that I re-invented some wheel here. (My
> ExtensionalEquality is isomorphic to
>     Refl (a -> b) (a -> b)
> but Refl ist conceptually about type equality, not term equality.)
>
> Thanks
> Olaf
>
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20230531/2fb90590/attachment.html>


More information about the Haskell-Cafe mailing list