[Haskell-cafe] Unit and pair

Daniel Peebles pumpkingod at gmail.com
Tue May 8 21:31:48 CEST 2012

To expand on that, this class basically allows you to prove your
relation cholds pointwise across arbitrary binary trees, represented
by nested tuples
and terminated by ()s. If individual instances of the class had additional
ways of constructing values (i.e., proving the relation for the two type
parameters), then your trees could contain other types.

For example, if you had another type

data Iso a b = Iso (a -> b) (b -> a) -- the functions must be inverses

you could write an instance of Something for Iso and build a proof that ((),
(a, ((), b)) is isomorphic to ((), (c, ((), d)) given Iso a c and Iso
b dusing your class.

I'm not sure I'd bundle the two parts together, but I'd call your
pairmethod (or the class it lives in) something like congruent or
ProductsRespectThisRelation :)


On Tue, May 8, 2012 at 3:15 PM, Daniel Peebles <pumpkingod at gmail.com> wrote:

> FullBinaryTreeRelation? :P
> On Tue, May 8, 2012 at 1:36 PM, MigMit <miguelimo38 at yandex.ru> wrote:
>> Hi café, a quick question.
>> Is there a somewhat standard class like this:
>> class Something c where
>>    unit :: c () ()
>>    pair :: c x y -> c u v -> c (x, u) (y, v)
>> ?
>> I'm using it heavily in my current project, but I don't want to repeat
>> somebody else's work, and it seems general enough to be defined somewhere;
>> but my quick search on Hackage didn't reveal anything.
>> I know about arrows; this, however, is something more general, and it's
>> instances aren't always arrows.
>> _______________________________________________
>> Haskell-Cafe mailing list
>> Haskell-Cafe at haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20120508/07fcef53/attachment.htm>

More information about the Haskell-Cafe mailing list